#include <iostream>
using namespace std;
struct T
{
T () { cout << "D"; } // default construction
T (T const&) { cout << "C"; } // copy construction
};
T f1 () { return T(); } // RVO
T f2 () { T t; return t; } // NRVO
T f3 () { T t; t = T(); return t; } // NRVO
int main ()
{
cout << "min D max D = ";
T t1;
cout << endl;
cout << "min D max DC = ";
#ifndef __GNUC__
T t2( (T()) );
#else // __GNUC__
T t2((0, T())); // to avoid g++ 2.x, 3.x parse bug
#endif // __GNUC__
cout << endl;
cout << "min D max DC = ";
T t3 = T();
cout << endl;
cout << "min D max DCC = ";
T t4(f1());
cout << endl;
cout << "min D max DCC = ";
T t5 = f1();
cout << endl;
cout << "min D max DCC = ";
T t6(f2());
cout << endl;
cout << "min D max DCC = ";
T t7 = f2();
cout << endl;
cout << "min DD max DDCC = ";
T t8(f3());
cout << endl;
cout << "min DD max DDCC = ";
T t9 = f3();
cout << endl;
}
Visual Studio 2005 Release Candidate (rtm.50727.42)
Debug:
min D max D = D
min D max DC = D
min D max DC = D
min D max DCC = D
min D max DCC = D
min D max DCC = DC
min D max DCC = DC
min DD max DDCC = DDC
min DD max DDCC = DDC
Release:
min D max D = D
min D max DC = D
min D max DC = D
min D max DCC = D
min D max DCC = D
min D max DCC = D
min D max DCC = D
min DD max DDCC = DD
min DD max DDCC = DD
There are no comments on this page. [Add comment]