首页 > 解决方案 > 定义中的显式特化导致错误:非命名空间范围内的显式特化

问题描述

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。如何在命名空间范围内实现相同的功能?

标签: c++gccnamespacesclangexplicit-specialization

解决方案


推荐阅读