9

次の疑似スニペットを検討してください。

class SomeClass
{
public:
    SomeClass()
    {
        if(true)
        {
            fooCall = [](auto a){ cout << a.sayHello(); };
        }
        else
        {
            fooCall = [](auto b){ cout << b.sayHello(); };
        }
    }
private:
    template<typename T>
    std::function<void(T)> fooCall;
};

私が欲しいのはfooCall、コンストラクターで割り当てられる汎用ラムダを格納するクラス メンバーです。

fooCallコンパイラは、テンプレート化されたデータ メンバーになれないと文句を言います。

汎用ラムダをクラスに格納する方法に関する簡単な解決策はありますか?

4

3 に答える 3