RichardBerg : ScratchPad3

FavoriteLinksCondensed :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings
#0
#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]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.4
Page was generated in 0.2708 seconds