読者です 読者をやめる 読者になる 読者になる

C++0x std::reference_closure があるのは直交性のため?

C++

Cry's Diary - std::reference_closure の存在意義がやっぱりよくわからにゃいにゃー


std::reference_closure が、参照のラムダ式をローカル変数としてもつために
あるのだとしたら、そんなのいらないんじゃないかなと思った


ラムダ式は匿名(ユニークな名前)の関数オブジェクトなのだから
それは auto や function に保持できるし、関数テンプレートにも渡せるので
std::reference_closure なんてなくても困らないじゃん!


と思ったんだけど、それだとラムダ式は言語の他の機能(auto)やライブラリに依存してしまうので
その依存関係をなくすために std::reference_closure があるのかなーと
(ラムダ式の関数オブジェクトは std::reference_closure を継承したクラスになるので)


※ 直交性とは、お互いが依存せず独立していて、組み合わせて使えること