【C++】template 統合スレ -- Part5
■ このスレッドは過去ログ倉庫に格納されています
0484デフォルトの名無しさん
NGNGlambdaは内部に戻り値の型を推論するための特殊な機構を使っています.
組み込み型の演算子の戻り値型推論,例えばint + intの戻り値がintになるといったような推論は
ライブラリに元から組み込まれていますけれど,ユーザ定義型に対しては定義されていません.
なので,以下のどちらかが必要になります.
その1:retでoperator+(C,C)の戻り値の型を明示する
(var(m) = ret<C>(_1 + _2))(c, d);
その2:Boost.Lambda内の戻り値型推論機構をCに対して特殊化する
// 先にlambda.hppをインクルードしておく
namespace boost{namespace lambda{
// operator+(C,C)の戻り値の型をCに指定する
// これを一度定義しておくと以降は+に対してretを指定する必要はなくなる
template<> struct plain_return_type_2<arithmetic_action<plus_action>,C,C>
{ typedef C type; };
}}
詳しくは481に挙げたドキュメントを参照してください.
■ このスレッドは過去ログ倉庫に格納されています