LINUX.ORG.RU

error: ‘remove_pointer’ is not a class template

 ,


0

1
template<typename T> struct remove_pointer { typedef T type; };
template<typename T> struct remove_pointer<T *> { typedef T type; };

Имеется такой код (не мой). В процессе компиляции с кучей параметров сгенерированных CMake (вы не хотите видеть эту портянку), данный код выдаёт ошибку:

prog.cpp:4:29: error: ‘remove_pointer’ is not a class template
 template<typename T> struct remove_pointer<T *> { typedef T type; };
                             ^~~~~~~~~~~~~~
prog.cpp:4:29: error: redefinition of ‘struct remove_pointer<T>’
prog.cpp:3:29: note: previous definition of ‘struct remove_pointer<T>’
 template<typename T> struct remove_pointer { typedef T type; };

Тем не менее, при вызове того же компилятора (gcc 8.3) без параметров, ошибок не наблюдается. Точно так же, часть онлайн компиляторов пишет ту же ошибку, часть компилирует. Вопрос: в чём может быть беда? Есть ли в природе онлайн компилеры, у которых можно параметры задавать?

★★★★★

При этом, не похоже, что дело в версии стандарта.

next_time ★★★★★
() автор топика

Разобрался. Такое же имя есть в стандарте. Кто-то просто использовал using namespace std; по проекту и возник банальный конфликт имён.

next_time ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.