显式特化成员类的成员类的外部定义
outside definition of member class of an explicitly specialized member class
这个例子来自N4527 14.7.3[temp.expl]。Spec]/5,有一点改动。
template<class T>
struct A {
struct B{};
};
template<> struct A<char>::B{
void f();
struct C;
struct D{}; // ok
};
void A<char>::B::f(){}// ok in gcc5.1.0 and clang3.6.0
struct A<char>::B::C{};// error in gcc5.1.0, ok in clang3.6.0
int main()
{
return 0;
}
我认为这是一个bug,我已经报告了。https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67402
相关文章:
- 类的前向声明之后的类成员函数定义,在类声明之前
- 内存中类位置的成员是否取决于类成员在类定义中的位置?
- C++成员函数的条件模板类定义
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 在类定义中推导内联静态成员函数的返回类型
- 在没有类定义的标头中定义成员变量
- 单独库中的类成员函数定义和链接依赖项
- 在类定义和使用静态数据之外定义私有成员函数
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 使用类的其他成员变量定义类的成员变量数组
- C++类 | 重复符号之外的成员函数定义
- 我如何使用explicit模板实例化用于类定义中定义的模板成员函数
- 能够在类定义之外访问私有对象成员
- 类模板,成员函数定义(如果对象是 X 类型)?
- 类定义中的静态数据成员初始化
- 为其成员根据模板基类存在的类定义构造函数
- C++ 定义不带模板参数的成员类的类型
- 类c++中的静态成员未定义引用
- 类定义中定义的成员函数的编译方式是否与C++中其他位置定义的成员函数不同
- 为什么编译器需要在已经类限定的成员函数定义的返回类型上使用类限定符