Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.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++ 内显式实例化';结构';名称空间是GCC下的错误吗?_C++_Templates_Gcc_Clang_C++17 - Fatal编程技术网

C++ 内显式实例化';结构';名称空间是GCC下的错误吗?

C++ 内显式实例化';结构';名称空间是GCC下的错误吗?,c++,templates,gcc,clang,c++17,C++,Templates,Gcc,Clang,C++17,我发现了一些类似的问题,但没有一个像我这样简单,因为我在一个结构范围内有一个模板,它被明确地专门化了。在MSVC下,这很好,并且Clang>6.0.1但是GCC报告所有版本的错误 根据标准,哪个编译器是正确的 这个问题的一个最简单的例子是: 错误:“TFoo”在类范围中的显式专门化 结构栏 { 模板 类TFoo { }; //*GCC(全部)6.2至11.1+主干 //错误:非命名空间作用域的结构栏中存在显式专门化 //错误:模板参数列表太少 //*叮当作响供参考:Fab,我在Stackover

我发现了一些类似的问题,但没有一个像我这样简单,因为我在一个结构范围内有一个模板,它被明确地专门化了。在
MSVC
下,这很好,并且
Clang>6.0.1
但是
GCC
报告所有版本的错误

根据标准,哪个编译器是正确的

这个问题的一个最简单的例子是:

错误:“TFoo”在类范围中的显式专门化

结构栏
{
模板
类TFoo
{
};
//*GCC(全部)6.2至11.1+主干
//错误:非命名空间作用域的结构栏中存在显式专门化
//错误:模板参数列表太少

//*叮当作响供参考:Fab,我在Stackoverflow上的搜索结果并没有出现这个问题,不管是什么原因!感觉像是一个bug,很高兴知道。
struct Bar
{
    template<typename T>
    class TFoo
    {
        
    };

    // * GCC (ALL) 6.2 to 11.1 + trunk
    // error: explicit specialization in non-namespace scope 'struct Bar
    // error: too few template-parameter-lists
    // * Clang <= 6.0.1
    // error: explicit specialization of 'TFoo' in class scope
    template<>
    class TFoo<int>
    {
        int a;        
    };
};