2016-10-04 3 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).

Но это не делает, дает эту ошибку: Ошибка: значение «у» не может использоваться в постоянном выражении

Что мне не хватает?

+0

'Z ' не 'Z ' –

+2

@PierreEmmanuelLallemant Нет, 'Z ' здесь верен. – orlp

+0

В примере cppreference нет 'main()'. –

ответ

2

Вы берете ссылку на локальный объект, который не является постоянным выражением. Если y является глобальной переменной, it'd work just fine.

Смежные вопросы