2016-10-04 52 views
1

根據標準,這應該編譯:非類型模板 - 哪些類型是允許的?

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」的值不是一個常量表達式

我缺少可用?

+0

'Z '不'Z ' –

+2

@PierreEmmanuelLallemant不,'Z '在這裏是正確的。 – orlp

+0

cppreference示例沒有'main()'。 –

回答

2

您正在引用一個本地對象,它不是一個常量表達式。如果y是全球變量,則爲it'd work just fine