私は、次のようなではなく、テンプレートの構文ではなくラムダ構文で汎用のSUM関数を書きたかった:C++で可変汎用ラムダを使用して合計を計算する方法は?
template<typename T>
auto Sum(T lastSummand)
{
return lastSummand;
}
template<typename T, typename... Ts>
auto Sum(T firstSummand, Ts... restSummands)
{
return firstSummand + Sum(restSummands...);
}
一般的なラムダをテンプレートにマッピングされているので、のような何かを行うことが可能であるべきである:
auto sum = [](auto firstSummand, auto... restSummands) { ... };
しかし、私はラムダを使って再帰を行う方法を理解できません。この場所や他の場所での検索はあまり進んでいませんでした。
これはあなたが必要とする単純な理由のために動作しません:あなたは与えられたパラメータは、算術型のすべてのある場で検証したい場合は、次のように
は、あなたはブールトリックを使用することができますエンドケースをカバーするための専門化。少なくとも2つのラムダが必要です。 –
最近、C++がどこに向かうのが好きではありません。 –
@Sam Varshavichik:2つのラムダを使ってどうやって行くのですか? –