Почему мой шаблон не принимает список инициализаторов

Я создал следующий шаблон

template<typename T>
void f(T const& t) { }

Я хотел, чтобы он мог быть вызван контейнерами, но также и списками инициализаторов. Я думал, что это будет initializer_list , если вызвать его следующим образом.

f({1, 2, 3});

Но GCC ведет себя так, как будто он не соответствует стандартам

m.cpp: In function 'int main()':
m.cpp:6:25: warning: deducing 'const T' as 'const std::initializer_list<int>'
m.cpp:4:6: warning:   in call to 'void f(const T&) [with T = std::initializer_list<int>]'
m.cpp:6:25: warning:   (you can disable this with -fno-deduce-init-list)

Может ли кто-нибудь объяснить, как я могу заставить эту работу работать без предупреждений? Спасибо!

24
задан Johannes Schaub - litb 3 October 2011 в 13:14
поделиться