我似乎无法在C 11中使用本地静态值作为模板参数.例如:
#include <iostream> using namespace std; template <const char* Str> void print() { cout << Str << endl; } int main() { static constexpr char myStr[] = "Hello"; print<myStr>(); return 0; }
error: ‘myStr’ is not a valid template argument of type ‘const char*’ because ‘myStr’ has no linkage
candidate template ignored: invalid explicitly-specified argument for template parameter 'Str'
两个编译器都使用-std = c 11运行
指向在线编译器的链接,您可以从中选择多个C编译器之一:http://goo.gl/a2IU3L
注意,将myStr移动到主编译之外并按预期运行.
注意,我已经查看了类似于C 11之前的StackOverflow问题,并且大多数表明这应该在C 11中解决.例如Using local classes with STL algorithms