That looks to me like simply an unusual combination of a number of not-so-unusual things. I would say it is absolutely not dangerous, but whether it is bad practice it probably a matter of opinion.
I think it's probably okay.
Here's food for thought:
Of course this makes deletion a little unintuitive and easily forgotten, so I wouldn't suggest actually using code like the above.
template <typename T> T& new_ref()
return *(new T());
template <typename T, typename P1> T& new_ref(P1 p1)
return *(new T(p1));
template <typename T, typename P1, typename P2> T& new_ref(P1 p1, P2 p2)
return *(new T(p1, p2));