Pythonは、function decoratorsという非常に便利な機能を備えており、さらに構成が可能です。合成可能なC++関数のデコレータ
@lru_cache
@retry
def foo(...):
:機能
foo
を書く場合たとえば、あなたは、あなたがで、
foo
は
foo
も例外を発生させているキャッシュミスの場合は、単一の時間よりも
memoized、だけでなく、
retried以上になりたいことを述べることができます
デコレータのコンポジット機能では、foo
や個々の関数デコレータなどの機能を個別に開発し、必要に応じてそれらを混合することができます。可能ならば、C++でもそうすることができればうれしいでしょう。
関数デコレータに関するStackOverflowに関するいくつかの質問がありますが、デコレータ関数のシグネチャの厳格な前提のため、すべての関数はデコンストラクタを生成できないようです。たとえば、優れたトップ投票の回答をthis questionとします。装飾は
template <typename R, typename... Args>
std::function<R (Args...)> memo(R (*fn)(Args...)) {
したがって、cannot be applied to the result of itself(メモ化の具体的なデコレータを使用するために、問題の確かにあまりない)の形式です。
次に、合成可能な関数デコレータを書くことができますか?
あなたが与えた例はあまり説得力がありません。その実装に関数ポインタを必要とするものは何もありません。 –