是否可以编写一个智能指针,在其构造函数中分配对象本身 - 而不是开发人员必须调用new
?换句话说,而不是写:
std::unique_ptr<myClass> my_ptr(new myClass(arg1, arg2))
...可以写:
std::smarter_ptr<myClass> my_ptr(arg1, arg2)
语言语法是否能够表达这一点?这是可取的吗?可怕?我特别考虑防止这个错误(当然是我自己犯的):
myFunction(std::unique_ptr<myClass>(new myClass()), std::unique_ptr<myClass>(new myClass()))
...如果第二次分配发生并在第一个对象安全地嵌入其智能指针之前抛出,则可能会泄漏首先分配的任何对象。但是更智能的指针真的可以保证安全吗?