argv[]) const int k = 1000; return 0;现在,我明白了为什么在第一种情况下它不能编译,在第二种情况下它可以编译背后的逻辑,但是这是由标准指定的吗?我得到的错误是:
Error 1 error C2971: 'foo' : template parameter 'k' : 'k' : a local variable cannot be usedas a non-type ar
to an int here}使用g++ -O0 -Wall -pedantic -ansi -std=c++11编译上述代码不会产生任何错误(除了一个未使用的变量但是,如果删除-std=c++11,则会收到以下警告:
根据,我认为在C++03中,代码是无效的。但是,有人能解释一下C++11中的规则是如何变化的吗?(这个问题是我回答的的结果。)