メモ

多分rvoっていう事で話は終わった。

#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;

char* demangle(const char *demangle) {
    int status;
    return abi::__cxa_demangle(demangle, 0, 0, &status);
}

/*
Sはあらゆる方法で生成出来ないようにしたい修造体
*/
struct S{
    const static int v = 0;
    int v_;
private:
    S();
    S(const S&);
    S(S&&);
    S& operator=(const S&);
    S& operator=(S&&);
};

S makeS(){}

int hoge(){return 72;}    

void getS(S s = makeS())
{
    printf("getS.s = %p\n",&s);
}

int main()
{
    cout << sizeof(makeS()) << endl;
    cout << demangle(typeid(makeS()).name()) << endl;

    //getS(makeS());
    getS();
    return 0;
}