我试图constexpr
像这样向前声明一个变量模板:
template<typename>
constexpr std::size_t iterator_category_value;
目标是记录每个专业化都应该是constexpr
,但我不得不承认我从未检查过它是否合法,g++ 对此很满意。但是,当我尝试用 clang++ 编译这个 spinnet 时,我得到了以下错误:
error: default initialization of an object of const type 'const std::size_t' (aka 'const unsigned long') constexpr std::size_t iterator_category_value; ^ = 0
该错误是有道理的,删除constexpr
会使它消失,所以这不是一个真正的问题。但是,我现在很好奇:标准是否允许constexpr
对变量模板进行这样的前向声明,还是非法的?g++ 和 clang++ 似乎不同意,我想知道如果需要我应该在哪里提交错误报告。
他们俩都抱怨constepxr
不是变量模板的前向声明变量,因此变量模板上下文似乎是使编译器不同意的原因。