Я бы, вероятно, поместил комментарий рядом, который объясняет, что вы не полагаетесь на то, что компилятор выводит правильный тип из-за недостатков в некоторых версиях GCC.
дал шаблон следующим образом
template<typename T>
void f(T const& t) { }
Я хотел, чтобы это вызывалось как контейнерами, так и списками инициализаторов. Я думал, что это будетinitializer_list<int>
, когда вызывается следующим образом.
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)
Может кто-нибудь объяснить, как я могу сделать эту работу без предупреждений? Спасибо!