-1

私は可変個引数テンプレートで遊んでいて、現在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;
4

2 に答える 2