gpt4 book ai didi

模板参数中的 C++ 智能指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:26:09 27 4
gpt4 key购买 nike

我正在尝试将其写为模板参数:

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() 中的参数然后一切正常。

是否有特殊的方式将智能指针作为模板参数传入?

最佳答案

发现是 Object 导致了问题,这似乎有效:

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

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

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

关于模板参数中的 C++ 智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com