gpt4 book ai didi

c++ - 模板函数的 'typedef' (boost::make_shared)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:16 25 4
gpt4 key购买 nike

我正在将我的项目迁移到 C++11,我正在尝试使用尽可能多的标准库。

在完成迁移之前,我需要一种快速的方法来在 shared_ptr 的 boost 和 STL 实现之间切换(以进行基准测试、单元测试等)。

所以我为 shared_ptr 定义了一个别名,如下所示:

#ifdef _USE_BOOST_
template <class C>
using shared_ptr = boost::shared_ptr<C>
#else
template <class C>
using shared_ptr = std::shared_ptr<C>
#endif

现在我需要为 make_shared 做同样的事情...但是怎么做呢?宏观? wrapper ?我真的不喜欢他们中的任何一个。有哪些替代方案?

最佳答案

使用可变参数模板和完美转发:

template<typename C, typename...Args>
shared_ptr<C> make_shared(Args &&...args) {
#ifdef _USE_BOOST_
return boost::make_shared<C>(std::forward<Args>(args)...);
#else
return std::make_shared<C>(std::forward<Args>(args)...);
#endif
}

关于c++ - 模板函数的 'typedef' (boost::make_shared),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196904/

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