私は可変個引数テンプレートで遊んでいて、現在operator<<
タプルを実装しようとしています。
次のコードを試しましたが、コンパイルされません (GCC 4.9 with -std=c++11)。
template<int I, typename ... Tlist>
void print(ostream& s, tuple<Tlist...>& t)
{
s << get<I>(t) << ", ";
if(I < sizeof...(Tlist)){
print<I+1>(s,t);
}
}
template<typename ... Tlist>
ostream& operator<<(ostream& s, tuple<Tlist...> t)
{
print<0>(s,t);
return s;
}
エラー メッセージは非常に不可解で長いですが、基本的には、get に一致する関数呼び出しがないことを示しています。誰かが私に理由を説明できますか? ありがとう。
編集:これが私が使用しているテンプレートのインスタンス化です
auto t = make_tuple(5,6,true,"aaa");
cout << t << endl;