我正在尝试将其写为模板参数:
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>
中的UT
参数中传递FooMethod()
,那么一切正常。
有没有一种特殊的方法可以将智能指针作为模板参数传递?
答案 0 :(得分:1)
想出Object
导致问题,这似乎有效:
template <void(std::unique_ptr<T>)>
然后我只需要像这样添加一个标识函数:
template <void(*F)(std::unique_ptr<T>)>