Re[6]: Частичная специлизация
От: CrystaX Россия https://crystax.me/
Дата: 05.10.05 12:11
Оценка: 3 (2)
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.