Предупреждение о слишком большом количестве заголовков шаблона - PullRequest
0 голосов
/ 27 апреля 2018

У меня такое же предупреждение, как в предыдущем обсуждении , но я не понимаю, как его решить:

предупреждение: слишком много заголовков шаблонов для foo <1> :: value (должно быть 0) int const foo <1> :: value = 1;

Предупреждающее сообщение появляется, когда кто-то хочет использовать следующий игрушечный заголовок:

#ifndef FOO
#define FOO

template<int T>
struct foo;

template<>
struct foo<1>
{ static int const value; };

template<>
int const foo<1>::value = 1;

#endif

Можете ли вы объяснить мне, в чем здесь проблема?

1 Ответ

0 голосов
/ 27 апреля 2018

template<> в вашем определении foo<1>::value является посторонним. Удалить это:

template<int T>
struct foo;

template<>
struct foo<1>
{ static int const value; };

int const foo<1>::value = 1;

clang++ дает вам гораздо лучшую ошибку:

prog.cc:11:1: error: extraneous 'template<>' in declaration of variable 'value'
template<>
^~~~~~~~~~
1 error generated.

живой пример на wandbox

...