Александреску, приемы программирования, need help
От: avsokolov  
Дата: 24.03.08 03:32
Оценка:
Добрый день, помогите разобраться со след. кодом:



template<bool> struct CompileTimeError;
template<> struct CompileTimeError<true> {};

#define STATIC_CHECK(expr) \
   (CompileTimeError<(expr) != 0>())



Описание:

CompileTimeError is a template taking a nontype parameter (a Boolean constant). Compile-TimeError is defined only for the true value of the Boolean constant. If you try to instantiate CompileTimeError<false>, the compiler utters a message such as "Undefined specialization CompileTimeError<false>." This message is a slightly better hint that the error is intentional and not a compiler or a program bug.

Мне не понятна вторая строка:


template<> struct CompileTimeError<true> {};



В первой строке объявляется шаблонная структура CompileTimeError;
По идее во второй строке — определение этой структуры, но если я правильно понимаю, определение должно было выглядить след образом:


CompileTimeError<true> {};
Re: Александреску, приемы программирования, need help
От: jazzer Россия Skype: enerjazzer
Дата: 24.03.08 04:05
Оценка:
Здравствуйте, avsokolov, Вы писали:

A>Мне не понятна вторая строка:


A>
A>template<> struct CompileTimeError<true> {};
A>


A>В первой строке объявляется шаблонная структура CompileTimeError;

A>По идее во второй строке — определение этой структуры
Нет, это называется "специализация шаблона".
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.