아니 분명히 생성자는 Rvalue 잖아?
그것도 순혈이니까 PRvalue 잖아
그런데
auto instance = Class( args... );
또는,
auto instance(Class(args));
를 할 경우,
오버로딩 해놓은 무브 생성자가 소환이 안됨
이건 어셈블리로 확인해봐도 분명함
이게 내 메인 함수고,
핑크색 줄을 보면 알겠지만 SeePlusPlus 옵젝트에 SeePlusPlus( args) 꼴 Rvalue를 대입했음
그러면 이론상으로는 무브 복사 연산자가 나와야 되는데,
무브 복사 연산자는 소환된 적이 없음,
아마도 디폴트 생성자도 소환된적이 없음;;;
그런데, 저 생성자 Rvalue 를 PRvalue 에서 std::move 를 통해 Xvalue 로 캐스팅해주면,
정상적으로 무브 복사 대입 연산자가 불려짐
대체 왜 PRvalue 인 생성자는 튕기고,
Xvalue 로 캐스팅해준 생성자는 먹는 거임?
ㅠㅠ 이해가 안됨
무슨얘긴지이해도안되는한남자기있어
좆같은거임 이거 우측값 없을때부터 이런형태는 초기화 문법이었음 복사생성자로 생성하는게 아니라
그래서 명시적으로 move안하면 =가 있어도 생성자 호출로 생성하는 문장이고 명시적으로 move하면 그때서야 표현식으로 받아서 생성한다음 임시객체로 우측값복사함
아니 씨발 문법 미쳤네 비야네 돌았나 - return 0;