Как реализовать сообщение об ошибке, когда пользователь библиотеки использует неправильный тип для аргумента шаблона класса шаблона?Внедрить сообщение об ошибке для специализации класса класса
test.cpp (адаптируются от here)
#include <type_traits>
template <typename T, typename Enable = void>
class foo; // Sorry, foo<T> for non-integral type T has not been implemented.
template <typename T>
class foo<T, typename std::enable_if<std::is_integral<T>::value>::type>
{ };
int main()
{
foo<float> x;
}
код не компилируется, как и ожидалось. Но я не могу заставить компилятор показать ошибку только тогда, когда пользователь использовал неправильный тип.
Сообщение об ошибке в g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:11:13: error: aggregate ‘foo<float> x’ has incomplete type and cannot be defined
foo<float> x;
Проблема: Это не печатает сообщение об ошибке, что я хочу (Sorry, foo<T> for non-integral type T has not been implemented.
)