#include <iostream>
class Widget {
public:
Widget(){};
Widget(const Widget&) { std::cout << "Widget copy ctor "; }
template<typename T>
Widget(const T&) { std::cout << "Generalized Widget copy ctor "; }
template<typename T>
Widget(T&&) { std::cout << "Universal Widget ctor "; }
};
void endLine() { std::cout << '\n'; }
int main()
{
Widget w;
{
std::cout << "Create Widget from Widget:\n";
std::cout << " Direct init w/parens: "; Widget wcopy1(w); endLine();
std::cout << " Copy init : "; Widget wcopy2 = w; endLine();
std::cout << " Direct init w/braces: "; Widget wcopy3 {w}; endLine();
endLine();
}
{
std::cout << "Create auto from Widget:\n";
std::cout << " Direct init w/parens: "; auto wcopy1(w); endLine();
std::cout << " Copy init : "; auto wcopy2 = w; endLine();
std::cout << " Direct init w/braces: "; auto wcopy3 {w}; endLine();
endLine();
}
const Widget cw;
{
std::cout << "Create Widget from const Widget:\n";
std::cout << " Direct init w/parens: "; Widget wcopy1(cw); endLine();
std::cout << " Copy init : "; Widget wcopy2 = cw; endLine();
std::cout << " Direct init w/braces: "; Widget wcopy3 {cw}; endLine();
endLine();
}
{
std::cout << "Create auto from const Widget:\n";
std::cout << " Direct init w/parens: "; auto wcopy1(cw); endLine();
std::cout << " Copy init : "; auto wcopy2 = cw; endLine();
std::cout << " Direct init w/braces: "; auto wcopy3 {cw}; endLine();
endLine();
}
}
Sunday, August 2, 2015
Test post
Test post
Subscribe to:
Comments (Atom)