1. ホーム
  2. c++

[解決済み] std::tupleの要素を反復処理するには?

2022-06-10 16:44:17

質問

C++11を使用して)タプルに対して反復処理を行うにはどうしたらよいでしょうか?私は以下を試しました。

for(int i=0; i<std::tuple_size<T...>::value; ++i) 
  std::get<i>(my_tuple).do_sth();

とありますが、これではうまくいきません。

Error 1: sorry, unimplemented: cannot expand 'Listener ...' into a fixed-length argument list.

エラー2:定数式にiを出現させることができません。

では、タプルの要素に対して正しく反復処理を行うにはどうすればよいのでしょうか。

どのように解決するのですか?

ブースト・フュージョン は可能性があります。

未検証の例です。

struct DoSomething
{
    template<typename T>
    void operator()(T& t) const
    {
        t.do_sth();
    }
};

tuple<....> t = ...;
boost::fusion::for_each(t, DoSomething());