You can't, I think. operator ?: not overloaded. In addition, if T::T(int) defined, T foo = 4 is legal, and T foo = probe<int>(4) is not. There is no more than one user conversion.
Also, since the probe is not a POD, the behavior of your program may change.
source share