GCC 和非命名空间范围内的显式专用化
gcc and explicit specialization in non-namespace scope
struct X
{
template <typename>
struct Y;
template <>
struct Y<int>
{
};
};
此代码无法使用 GCC(甚至 GCC 10 链接(进行编译,并显示以下错误消息
error: explicit specialization in non-namespace scope 'struct X'
根据CPP参考
Explicit specialization may be declared in any scope where its primary template may be defined
此外,我们还有此缺陷报告,其中更改了行为以允许此代码编译CWG 727
然而在这个问题上有一些评论
到目前为止,这似乎还没有解决,gcc dev声称cwg727从未获得批准。 – 斯威夫特 - 星期五派 十一月 22 '19 在 19:11
表示此缺陷报告未获批准。这是真的吗?这是不符合标准的 gcc 错误吗?
这是 gcc 不符合标准,但是(如链接问题中所述(有一个 2018 年的错误报告,所以希望它能得到修复。
作为问题的解决方案,部分模板专用化工作正常,因此您只需添加一个虚拟模板参数。
struct X
{
template <typename, typename=int>
struct Y;
template <typename DUMMY_T>
struct Y<int, DUMMY_T>
{
};
};
这是在编译器资源管理器中。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 错误:未在此范围内声明'reverse'
- 并行用于C++17中数组索引范围内的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- GCC 和非命名空间范围内的显式专用化
- 非命名空间范围内的显式专用化不会在 GCC 中编译
- 类范围内的类模板专用化
- C++专用函数-不在此范围内错误