以下代码无法使用选项-std=c++1y
与g++ 5.4.0编译:
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
编译通过了呢?
以下代码无法使用选项-std=c++1y
与g++ 5.4.0编译:
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
编译通过了呢?
默认参数不属于函数类型,因此当您隐式地将函数转换为函数指针并间接引用该指针时,这些参数将被丢弃。
语言:C++14(gcc 6.3)
。 - underscore_d
g++
版本。5行已经过时,而5.4甚至不是它最新的小版本。在这种情况下,搜索GCC Bugzilla也是明智的选择,因为问题可能已经被发现,但是在较旧的版本中进行过滤可能需要一段时间,有时甚至不会发生。 - underscore_d