Здравствуйте, Sergey, Вы писали:
S>Нет, так не выйдет. Но можно писать
S>S>int x = func<int>(string("1"));
S>
S>Параметр T1 придется задать руками, параметр T2 будет выведен из аргументов.
А еще можно так (авторство принадлжит Шахтеру):
template <typename T1, typename T2>
T1 func_impl(T2 const &)
{
return T1();
}
template <typename T2>
class func_t
{
public:
func_t(T2 const &val) :v(val) {}
template <typename T1>
operator T1 () {return func_impl<T1>(v);}
private:
T2 v;
};
template <typename T>
func_t<T> func(T const &val) {return func_t<T>(val);}
int main()
{
// Использование:
int x = func(string("1"));
return 0;
}
... << RSDN@Home 1.1.4 stable rev. 510>>