非类型模板 - 允许哪些类型?

时间:2016-10-04 15:41:46

标签: c++ templates

根据标准,这应该编译:

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)。

但是,它没有,给出了这个错误:错误:'y'的值在常量表达式中不可用

我错过了什么?

1 个答案:

答案 0 :(得分:2)

您正在引用一个本地对象,它不是一个常量表达式。如果y是全局变量,it'd work just fine