Re: Вывод аргумента шаблона класса из аргументов конструктор
От: saf_e  
Дата: 04.06.10 16:17
Оценка:
Здравствуйте, licch, Вы писали:

L>Вот код:



L>
L>#include <vector>

L>template <class Elem>
L>class SomeClass
L>{
L>public:
L>    vector<Elem> vec;
L>    SomeClass (const vector<Elem> &vec_): vec(vec_){}
L>};

L>int main (void)
L>{
L>    vector<int> vec;
L>    SomeClass<int> sc1(vec); // ок
L>    SomeClass sc2(vec); // не ок
L>}
L>


L>Если указывать класс элемента явно, то естественно всё работает. Можно как-нибудь изменить конструктор так, чтобы и вторая строка заработала?


Нет, идет нарушение синтаксиса. Тип шаблона должен указываться явно. (ну или косвенно

иначе возможно было бы:

 vector<double> d_vec;
 vector<int> vec;
 SomeClass sc1(vec), sc2(d_vec); // уже интересно, типы с виду одинаковые
 sc1 = sc2; // А что тут делать?


Более того не допустима даже такая конструкция:

class SomeClass
{
public:
        template<T>
    SomeClass() {}
};


Т.е. тимплейтный конструктор тип которого не может быть явно определен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.