我使用 g++ 4.8.1。编译:
g++ -std=c++11 test23.cpp test24.cpp -oa
测试24.cpp:
int gi1=98;
测试23.cpp:
extern int gi1; // compiler cannot predict the value
template<class T>
constexpr bool f8() {
return (gi1 > 5);
}
// constexpr bool ce = f8<float>(); // OK, it is compile error
int main() {
bool bz1 = f8<float>();
}
编译没有错误。不应该是错误吗?
现在没有模板:
测试23.cpp:
extern int gi1;
constexpr bool f8() {
return gi1 > 5;
}
int main() {
bool bz1 = f8();
}
好的,编译错误:test23.cpp:4:1:错误:'gi1' 的值在常量表达式
test23.cpp:1:12 中不可用:注意:'int gi1' 不是 const
先感谢您