在 C 11 中重新创建 make_unique 函数
C 11 标准引入了一个强大的函数 make_unique,用于创建唯一指针。然而,有些人可能会遇到编译器不支持此功能的问题。本文提供了在 C 11 中实现 make_unique 的解决方法。
根据问题,make_unique 函数原型为:
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&&... args );</code>
以下代码提供了 make_unique 的实现:
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
此实现使用 std::forward函数以确保所有类型的参数(包括引用和右值引用)都能正确进行参数转发。
请注意,如果您的编译器支持 C 11 但不支持 make_unique 函数,您仍然可以使用此实现作为解决方法。或者,如果您有权访问支持 C 14 或更高版本的编译器,则可以简单地利用标准 std::make_unique 函数来实现此目的。
以上是当你的编译器不支持时,如何在 C 11 中实现 `make_unique`?的详细内容。更多信息请关注PHP中文网其他相关文章!