非类型哪些类型是允许的

Non-type which types are allowed?

本文关键字:类型      更新时间:2023-10-16

根据标准,这应该编译为:

struct Y {};
template<const Y& y> struct Z {};

int main(){
    Y y;
    Z<y> z;  // ok: no conversion and cv-qualification conversion
}

(取自- http://en.cppreference.com/w/cpp/language/template_parameters)

但是,它没有,给出这个错误:error: ' y '的值不能用于常量表达式

我错过了什么?

您正在接受对局部对象的引用,该对象不是常量表达式。如果y是一个全局变量,它会工作得很好。