template <typename P>
void DoUntil(P predicate = [] { return false; });
をしかし、この文はどちらか動作しません - クラン私は、引数のない関数呼び出しを行う場合
error: no matching function for call to …
note: candidate template ignored: couldn't infer template argument 'P'
が、何とかコンパイラはデフォルト引数からタイプを推測するために失敗します:エラーが発生します
int main() { DoUntil(); }
std::function<>
は何も使用しません。
問題には他に解決策がありますか?
これは推論されないコンテキストです。 [cppreference](http://en.cppreference。com/w/cpp/language/template_argument_deduction)非推定コンテキスト。引数の減算が行われている呼び出しで使用されているデフォルト引数を持つ関数パラメータのパラメータ型で使用されるテンプレートパラメータ。 – felix
なぜ 'std :: function'を使いたくないのですか? –