假设我有一些名为 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/