ベイダー日記の方更新してから思い出したけど、C++でPipeline operatorのようなことって、pstate::eggで既にやっているのを見たような……。
http://vader.g.hatena.ne.jp/wata_d/20080221/1203583962
探したらありました。
#include <iostream> #include <pstade/egg/pipable.hpp> using namespace std; using namespace pstade::egg; int one() { return 1; } int two() { return 2; } struct print_obj { typedef void result_type; void operator()(int n) const { cout << n << endl; } }; result_of_pipable<print_obj>::type const print = PSTADE_EGG_PIPABLE_L {} PSTADE_EGG_PIPABLE_R; int _tmain(int argc, _TCHAR* argv[]) { one() | print; two() | print; return 0; }
すっきり!