Выбор между оператором преобразования типа и конструктором
От: atanasyan  
Дата: 11.06.05 09:10
Оценка:
Не подскажет ли кто? Есть код:

struct S1;

template <int C>
struct S2
{
S2(const S1 &);
};

struct S1
{
template <int C>
operator S2<C> () const;
};

template <int C>
struct S3
{
template <class L>
S3(L, const S2<C> &);
} ;

S3<0> a(0, S1());

При создании объекта 'a' класса S3 компилятор выбирает вызов конструктора S2, которому передается экземпляр S1, а затем, получившийся объект класса S2 передается в конструктор S3. Меня это устраивает, но возникает вопрос: какое место стандарта С++ заставляет использовать такой путь, а не вызывать оператор преобразования типа для объекта класса S1? Это явно связано с положениями стандарта, т.к. разные компиляторы ведут себя одинаково.

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