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

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—2009 Inside C++ Коммерческие услугиКонтактная информация

аккумулятор для Nokia 2610. мойки из керамогранита. порно ролики. Новогоднее порно