foo bar()

{

return foo();

}


int main()

{

foo a(bar());

return 0;

}


이런 코드에서 bar함수 안의 익명객체, 메인 함수 안의 a에서 각각 기본생성자랑 복사생성자가 호출되고 따로 소멸할줄 알았는데 막상 돌려보니 기본생성자 한번, 소멸자 한번만 호출되더군요(visual studio 2015기준) 

컴파일러 최적화 때문일까요?