非命名空间范围内的 C 显式专业化错误
尝试在命名空间之外显式专业化成员函数模板时,可能会出现 C 编译错误命名空间范围,导致消息“非命名空间范围中的显式专业化”。此问题与违反 C 标准有关,该标准要求在模板或其封闭类的命名空间内声明显式专业化。
要解决此问题,请考虑以下选项:
namespace detail { template <typename TL> void Verify(int, int[]) {} template <> void Verify<int>(int, int[]) {} } template<typename T> class CConstraint { // ... template <typename TL> void Verify(int position, int constraints[]) { detail::Verify<TL>(position, constraints); } };
通过将特化放在正确的范围内或转发到非成员函数,编译错误应该是已解决。
以上是为什么 C 会抛出'非命名空间范围中的显式专业化”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!