c++ - C++( future 版本)中是否有任何机制可以使这些事情变得现实?

标签 c++ c++11

假设我有一些名为 Friendly_point 的模板类,以及一个名为 foo 的用户定义类,并且 foo 有一些具有不同参数的构造函数数字和类型,例如 foo()foo(int)foo(int, char *)

我想知道是否有任何方法可以实现 Friendly_point 模板,以便我可以编写这样的客户端代码:

friendly_point<foo> obj1;
friendly_point<foo> obj2(1);
friendly_point<foo> obj3(1,"abc");

更重要的是,friend_point 模板是否可以以这样的方式实现,即它的用户可以将某个内存池挂接到它,以便它提供给客户端的所有对象都来自该池?

最佳答案

您已经可以做到这一点,只需子类化智能指针并使用 perfect forwarding就像 emplace已经这样做了。 Example :

#include <memory>
#include <utility>

template<class T>
struct friendly_ptr
{
    std::shared_ptr<T> p;
    template<typename... Params>
    friendly_ptr(Params&&... params) : p(new T(std::forward<Params>(params)...))
    {
    }

};

int main()
{
    friendly_ptr<int> p(1);
}

关于c++ - C++( future 版本)中是否有任何机制可以使这些事情变得现实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696466/

相关文章:

c++ - 将 lambda 函数作为参数传递时没有匹配函数错误

C++11 lambda 通过引用捕获可平凡破坏

c++ - 转置模板参数包

c++ - 在其他线程QT/C++中调用方法

c++ - C/C++签名中两个const的含义

关于继承成员地址的 C++ 标准

c++ - 将元组的内容作为可变函数参数传递

c++ - 在工作目录之外的 C++ 中打开文件

c++ - C++ 中缺少 return 语句仍然可以工作

c++ - 如何快速释放包含动态分配内存作为值的映射?