首页 > 解决方案 > clang 中的非类型模板参数

问题描述

当我尝试编译以下代码时:

struct S { int a; };
template <const int*> struct T {};
constexpr S kS{.a = 42};
constexpr T<&kS.a> kT;
int main() { return 0; }

它适用于 gcc,但在 clang 上失败:

<source>:4:13: error: non-type template argument refers to subobject '&kS.a'
constexpr T<&kS.a> kT;

我无法找到有关此错误的任何信息。有谁知道这是什么,它是一个缺失的功能,还是 c++ 标准的一个怪癖,或者可能还有其他什么?除了复制值之外,还有其他解决方法吗?任何帮助,将不胜感激。

标签: c++templatesgccclangnon-type-template-parameter

解决方案


推荐阅读