在 C 11 中重新创建 make_unique 函数
C 11 标准引入了一个强大的函数 make_unique,用于创建唯一指针。然而,有些人可能会遇到编译器不支持此功能的问题。本文提供了在 C 11 中实现 make_unique 的解决方法。
根据问题,make_unique 函数原型为:
template unique_ptr make_unique( Args&&&... args );
下面的代码提供了一个实现make_unique:
template
std::unique_ptr make_unique(Args&&... args)
{
return std::unique_ptr(new T(std::forward(args)...));
}
此实现使用 std::forward 函数来确保所有类型的参数(包括引用和右值引用)都能正确进行参数转发。
请注意,如果您的编译器支持 C 11 但不是 make_unique 函数,您仍然可以使用此实现作为解决方法。或者,如果您有权访问支持 C 14 或更高版本的编译器,则可以简单地利用标准 std::make_unique 函数来实现此目的。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3