S>template<class T1.class T2> S>T2 func(const T2& val) S>
S>int func<>(string("1")); S>
You will always get what you always got If you always do what you always did