Why does this line not cause an incident among the developers of the standard?
auto p = new auto(42);
There are four types of storage duration for an object, and accordingly there are four ways to create an object:
static T variable(expression),
thread_local T variable(expression),
It would be strange if type inference only worked for the first three ways, but not for dynamically allocated memory.