開発者が呼び出さなくても、オブジェクト自体をコンストラクターに割り当てるスマートポインターを作成することは可能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()))
...最初のオブジェクトがスマートポインタに安全に格納される前に2番目の割り当てが発生してスローされた場合、最初に割り当てられたオブジェクトがリークするリスクがあります。しかし、よりスマートなポインターは実際にこれを安全にするでしょうか?