以下の内容はhttps://faithandbrave.hateblo.jp/entry/20110926/1317023110より取得しました。


Boost.Phoenix マニピュレータの実装

Boost.Phoenixのラムダ式は、std::endlなどのIOマニピュレータを使用することができます(Boost.Lambdaではできなかった)。
どうやってるか気になったので実装を覗いてみました。


以下、簡易実装です。

#include <iostream>

const struct lambda_t {} lambda = {};

typedef std::ostream& (*omanip_type)(std::ostream&);

std::ostream& operator<<(lambda_t x, omanip_type manip)
{
    std::cout << "lambda" << manip;
    return std::cout;
}

int main()
{
    lambda << std::endl;
}

単に関数ポインタの型を書いてるだけでしたね。


Boost.Phoenixのマニピュレータ対応部分は以下のソースにあります:
boost/phoenix/operator/io.hpp





以上の内容はhttps://faithandbrave.hateblo.jp/entry/20110926/1317023110より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14