Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумАртПаттерныАнтипаттерныЗаметкиВопрос-ответКнигорецензииСправочная

6. Простой шаблон

Что будет если попытаться скомпилировать, слинковать и запустить данную программу?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <int n = 0>
struct test
{
    enum
    {
        value = true ? 0 : test<n - 1>::value
    };
};

int main()
{
    int x = test<>::value;

    return 0;
}
Компилировать в Comeau
Ответить на вопрос вам поможет понимание того, как происходит развертка шаблонов. Вот что произойдет.
Произойдет ошибка компиляции. Несмотря на то, что value всегда будет равно нулю, компилятор предварительно попытается развернуть всю цепочку классов test<n - 1>, а так как специализации, которая остановила бы процесс поиска нет, произойдет ошибка компиляции.

Оглавление
Статистика
© 2007—2010 Inside C++ Коммерческие услугиКонтактная информация

вывески наружная реклама. . кровати из массива продажа по каталогу. . конвейерные системы хороший форум. . расчет окон ПВХ. . грузоперевозки по России найти информацию на сайте москва. . игрушки для детей от 2 лет лучший бесплатный сайт. . обучение восточным танцам. . квартиры в волгограде посуточно. . прачечная услуги и лучший сайт про прачка. . художественная ковка ограждения рейтинг каталогов.