![]() |
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; } |
Ответить на вопрос вам поможет понимание того, как происходит развертка шаблонов. Вот что произойдет. | ||
Произойдет ошибка компиляции. Несмотря на то, что value всегда будет равно нулю, компилятор предварительно попытается развернуть всю цепочку классов test<n - 1>, а так как специализации, которая остановила бы процесс поиска нет, произойдет ошибка компиляции. |
|
Статистика |
|