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) без параметров, ошибок не наблюдается. Точно так же, часть онлайн компиляторов пишет ту же ошибку, часть компилирует. Вопрос: в чём может быть беда? Есть ли в природе онлайн компилеры, у которых можно параметры задавать?