Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类封闭的模板参数的默认参数';x';_C++_Templates - Fatal编程技术网

C++ 类封闭的模板参数的默认参数';x';

C++ 类封闭的模板参数的默认参数';x';,c++,templates,C++,Templates,有人能告诉我这个代码出了什么问题吗 template<typename S, typename T = int> void foo() { extern int x; } 但是,Clang3.8成功地编译了相同的代码 对于这个非常简单的示例,有一个解决方法,可以将extern声明置于函数之外。但是对于实际代码,extern声明必须在foo范围内,因此解决方法不可用 我用谷歌搜索,找到了一个7年前报道过的网站,现在仍然开放。我不确定是否有相同的错误您能对您的工具链进行一次小的

有人能告诉我这个代码出了什么问题吗

template<typename S, typename T = int>
void foo() {
    extern int x;
}
但是,Clang3.8成功地编译了相同的代码

对于这个非常简单的示例,有一个解决方法,可以将
extern
声明置于函数之外。但是对于实际代码,
extern
声明必须在
foo
范围内,因此解决方法不可用


我用谷歌搜索,找到了一个7年前报道过的网站,现在仍然开放。我不确定是否有相同的错误

您能对您的工具链进行一次小的升级吗?GCC 6.1接受@StoryTeller,非常感谢!它起作用了。该网站非常有趣:)
test.cpp: In function 'void foo()':
test.cpp:4:16: error: default argument for template parameter for class enclosing 'x'
     extern int x;
                ^