Boost.Phoenix で、__stdcall 付き関数の評価
Boost.Phoenix の bind は、__stdcall 等が付いた関数に対応していないので、Boost.Bind でラップする必要があります。
[ソース]
#define BOOST_BIND_ENABLE_STDCALL #include <boost/phoenix.hpp> #include <boost/bind.hpp> #include <iostream> void __stdcall disp(int n){ std::cout << n << std::endl; } int main(){ namespace phx = boost::phoenix; using phx::arg_names::arg1; using phx::local_names::_a; phx::let(_a = arg1)[ // boost::bind でラップする phx::bind(boost::bind(&disp, _1), _a), phx::bind(boost::bind(&disp, _1), _a * _a) ](10); return 0; }
[出力]
10 100
[boost]
- ver 1.47.0