lambdaからcapture-listを取得する方法

投稿者: Anonymous

c++のlambda式から、キャプチャした変数のリストを取得することはできますか?

int x = 10;
auto f = [x](){};
//auto captureList = f.captureList;

解決

英語版で同様の質問 (Get captured variables from lambda?) がありました。結論から言うと「できない」ようです。

リンク先で引用している言語仕様 (5.1.2 [expr.prim.lambda]) をざっと訳してみると

  • コピーキャプチャに対しては、static ではない、無名のデータメンバがクロージャ内で宣言される。その順番は規定しない。
  • 参照キャプチャに対しては、そのようなデータメンバを宣言するかどうかも規定しない。

なので、キャプチャについてのメタデータはないと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *