c++ - 定义中的显式特化导致错误:非命名空间范围内的显式特化
问题描述
我explicit specialization in non-namespace scope
从这个定义中得到错误:
#define DECLARE_INTERNAL_LINK_SPECIALIZATION(T, Counter) template<> struct T<Counter>
这是使用定义的方式,这会触发错误:
#define DECLARE_INTERNAL_LINK_BASE(T) template<int Counter> struct T
#define DECLARE_INTERNAL_LINK_SPECIALIZATION(T, Counter) template<> struct T<Counter>
namespace TestBugFix
{
struct FPlatformTypeLayoutParameters
{
DECLARE_INTERNAL_LINK_BASE(InternalLinkType);
DECLARE_INTERNAL_LINK_SPECIALIZATION(InternalLinkType, __COUNTER__);
};
}
我相信我得到这个定义没有命名空间范围。这适用于clang,但不适用于GCC。如何在命名空间范围内实现相同的功能?
解决方案
推荐阅读
- java - java.util 包中的堆栈类
- json - 打字稿 - 从 json 中删除空值
- sql - 查询以在 PostgreSQL 中返回按月计数
- node.js - 如何从另一个调用 Hapi 插件函数
- python - 我需要使用 selenium、python 单击以下 URL 中的无序链接
- html - Bootstrap 4 Card 组件删除不必要的空格
- python - 如何处理可能是一个值或多个列表的输入参数?
- javascript - 从 WMS 获取包含属性信息的弹出窗口
- xquery - xQuery - 填充自定义数组
- symfony4 - FOSRestBundle - 在异常处理程序中使用来自约束的错误消息