可変個引数テンプレート関数で中括弧で囲まれた初期化子リストを使用しようとしていますが、コンパイラが文句を言います...質問が多すぎますか、それとも何か間違ったことをしましたか?
これは、例によって最もよく示されています。
struct Bracy
{
Bracy(int i, int j)
{
}
};
struct Test
{
void consumeOne(int i)
{
}
void consumeOne(const Bracy & bracy)
{
}
void consume()
{
}
template<typename T, typename ...Values>
void consume(const T & first, Values... rest)
{
consumeOne(first);
consume(rest...);
}
template<typename ...Values>
Test(Values... values)
{
consume(values...);
}
};
void testVariadics()
{
Test(7,{1,2}); //I'd like {1,2} to be passed to consumeOne(const Bracy & bracy)
}
GCC(4.7)によると:
main.cpp:45:14: error: no matching function for call to ‘Test::Test(int, <brace-enclosed initializer list>)’