2

これをテンプレートパラメータとして書き込もうとしています:

template <class T>
struct FooStruct {

    template <void F(std::unique_ptr<T> Object)>
    void FooMethod()
    {
        //....
    }

};

次に、エラーが発生します。

error C2993: 'std::unique_ptr<T>' : illegal type for non-type template parameter 'Object'

このアプローチはうまくいきます:

template <class T>
struct FooStruct {

    template <class UT,void F(UT Object)>
    void FooMethod()
    {
        //....
    }

};

パラメータを渡すstd::unique_ptr<Person>と、すべて正常に動作します。UTFooMethod()

テンプレート パラメーターとしてスマート ポインターを渡す特別な方法はありますか?

4

1 に答える 1