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

1

找出Object导致问题的原因,这似乎有效:

template <void(std::unique_ptr<T>)>

然后我只需要像这样向函数添加一个标识:

template <void(*F)(std::unique_ptr<T>)>
于 2013-09-30T16:58:29.500 回答