gpt4 book ai didi

c++ - 部分和显式模板特化的奇怪错误

转载 作者:行者123 更新时间:2023-11-28 03:44:21 26 4
gpt4 key购买 nike

以下给出了 MSVC++ 10 Sp1 上的“内部编译器错误”。

在 gcc 上:

b.cpp:16:12: 错误:在非命名空间范围‘struct A::B’中的显式特化

b.cpp:16:28: 错误:主模板声明中的模板 ID ‘f’

//class template
template< class T>
struct A{

//struct B {}; //Remove the comment and it will compile!
};

//partial specialization
template< class T >
struct A< T* >
{
struct B {

template<class C> void f(){}

//"Internal Compiler Error"
template<> void f<int>(){};

};
};

但是,如果删除 struct B 之前的注释,它将编译!

我不明白这个问题!

最佳答案

您的代码中存在错误,而 MSVC++ 无法处理它。 gcc 编译产生这个:

$ make parspec.o
g++ -c -o parspec.o parspec.cc
parspec.cc:17: error: explicit specialization in non-namespace scope ‘struct A<T*>::B’
make: *** [parspec.o] Error 1

简而言之,您不能专门研究类或结构。

编辑: 快速谷歌搜索表明 MSVC++ 允许此类不符合规范的构造,但我猜他们在这方面做得不是很好。

关于c++ - 部分和显式模板特化的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com