에 대한 솔루션은 다음 코드를 살펴 보자 나는에 두 줄을 생각C++ strage 컴파일 오류
struct s
{
s& operator+() {return*this;}
};
void foo(s &) {}
s bar() {}
int main()
{
foo(bar()); //comp error
foo(+bar()); //ok
}
를 주 (컴파일러가 오른쪽 연산자 +()를 멀리 최적화 때문에), 동일해야? 어떤 것을 받아 들일 수는 있지만 다른 것은 받아들이지 않는 것이 무슨 의미입니까?
컴파일러가 무엇을 최적화할지 여부에 관계없이 (예 : 거의 모든 함수 호출이 아무 것도하지 않는 등) 코드에서 잘못된 코드를 받아 들일 수 없습니다. –