3

boost::phoenix::functionを使用すると、いくつかの問題が発生しました。私の知る限り、この遅延関数はテンプレート パラメーターとして functor を必要とします。ファンクター クラス/構造体を定義し、それをインスタンス化用のテンプレート パラメーターとして渡す必要があります。しかし、長すぎて冗長です。作成に他の呼び出し可能な型phoenix::function(関数参照/ポインターなど) を使用できますか? 私が試したlambdas

 const auto foo = [] { cout <<"Test"; }
 const boost::phoenix::function<decltype(foo)> lazy;

しかし、呼び出しlazy()はコンパイルされませんでした。phoenix::functionでは、高速な 1 行作成のためのファンクター クラスの代わりになるものはありますか?

4

1 に答える 1

5

の型fooはデフォルトで構築可能ではないlazyため、初期化子が必要です。

boost::phoenix::function<decltype(foo)> lazy { foo };
于 2012-10-20T19:52:51.200 に答える