we can have this feature just by wrapping a variable within a templated struct or class
Yes, but that would be gratuitous syntactic salt. Not healthy for the blood pressure.
pi<double>
conveys the intent better than pi<double>::value
. Short and to the point. That's enough of a reason in my book to allow and encourage this syntax.