Шаблон специализирующей функции на initializer_list не работает?

Я знаю, что специализировать шаблоны функций неправильно

Этот вопрос вне любопытства.

скажи у меня есть шаблон функции

template<typename T>
void foo(T){}

и я специализируюсь на этом

template<>
void foo(std::initializer_list<int>){}

и я называю это как

foo({1, 2, 3});

Я получаю сообщение об ошибке "Нет экземпляра foo, соответствующего brac-заключенному списку инициализатора", указывающего на основной шаблон (перегрузка работает нормально, как и ожидалось)

но если я изменю базовый шаблон функции, чтобы взять initializer_list в качестве параметра, то все в порядке.

что именно происходит?

компилятор: gcc 4.8.2 полезная ссылка

0 ответов

Другие вопросы по тегам