У меня есть интерфейс
std::string
get_string(Source const &s, std::string const &d);
int
get_int(Source const &s, int const &d);
bool
get_bool(Source const &s, bool const &d);
, который я хотел бы изменить на
template<class T>
T
get(Source const &s, T const &d);
Но нет разумного базового шаблона , поэтому фактическое базовое определение является легальным, но бесполезным (return d;
). Что я могу сделать, чтобы вызвать сбой во время компиляции, если база была создана? Есть ли идиоматическое решение для этой ситуации?