Специализация шаблона функции (к счастью!) Не обязана возвращать тот же тип, что и неспециализированный шаблон, поэтому здесь проблема не в этом.
На самом деле, enable_if
не имеет ничего общего с вашей ошибкой, в вашем коде просто отсутствует список аргументов шаблона в специализации:
template <>
bool foo<bool>()
{ return true; }
В sidenote, почему вы используете enable_if
, если условие всегда выполняется? (Я полагаю, что это не так в вашем реальном коде, но я просто хочу быть уверенным:)!)