다음 코드를 대하는 옵션 -std=c++1y
와 g ++ 버전 5.4.0로 컴파일 할 수 없습니다기본 인수 함수 역 참조 - C++ (14) C++ 11
void f(int=0) ;
int main() {
f(); // ok
(*f)(2);// ok
(*f)();// ok c++11; error with c++14: too few arguments to function
return 0;
}
기능 기본 인수를 선언 , 그래서 여기서 무엇이 잘못 되었습니까? 도움을 주신 덕분에 .
왜 g++ -c -std=c++11
이 컴파일됩니까?
확실한 대답은 새로운'g ++'버전을 시도하는 것입니다. 5 줄은 낡았 고, 5.4는 최신 마이너 버전조차도 아니다. 이와 같은 경우에는 GCC Bugzilla를 검색하는 것이 현명합니다. 문제는 이미 알려져 있기 때문에 이전 버전으로 필터링하는 데 시간이 걸리고 때로는 발생하지 않을 수 있습니다. –
컴파일러 버그와 같습니다. Clang은 C++ 11 및 C++ 14 모두에서이 코드를 거부합니다. – StoryTeller
이것은 최적화 단계의 순서와 관련이있을 수 있습니까? 인수가 처리되기 전에 직접 호출에 최적화 된 함수 포인터 –