This is the sort of thing that pushed me away from C++ a couple of decades ago. I remain perplexed that the "solutions" to C++'s "problems" have largely been to continue overcomplicating the language.
Smart pointers overcomplicated more than auto_ptr? Default ctors are an overcomplication? Optionals worse than void pointers, variants worse than unions?
Well now you have both. So yes, strictly worse from a language complexity perspective because now there are two options to choose from, and a significant, nonzero fraction of developers are going to choose the “wrong” option, and leave me to fix their bugs. Hell I even choose the wrong option half the time.