Я хочу предоставить функцию в моей библиотеке:
namespace Foo {
template<typename G>
typename std::enable_if<std::is_fundamental<G>::value, std::vector<uint8_t>>::type toBytes(const G &g) {
//something here
}
}
Однако я хочу предоставить базовую c реализацию только для базовых c типов. Если пользователь хочет добавить специализацию, я думаю, что было достаточно написать код пользователя:
namespace Foo {
template<>
std::vector<uint8_t> toBytes<struct A>(const struct A &g) {
//something here
}
}
Однако, он не компилируется, G cc выдает эту ошибку:
std :: vector Foo :: toBytes (const A &) 'не соответствует ни одному объявлению шаблона
Я что-то пропустил?