Здравствуйте, T4r4sB, Вы писали:
TB>Здравствуйте, collider, Вы писали:
C>>А фиг знает, я ж до конструктора не доберусь, пока struct_t не конкретизирую.
TB>Да, верно, дело в этом.
TB>А дальше уже правила становятся не очень очевидными, поэтому вывод не стали делать слишком умным.
TB>Надеюсь, вариант с промежуточной функцией (в которой явно задано правило, какую struct_t<T> выбрать) у тебя прокатил?
TB>А сколько раз ещё тебе придётся писать вот так:
TB>TB>template <typename T>
TB>struct SomeStruct__
TB>{
TB> SomeStruct__(const T& t)
TB> {
TB> // какой-то код
TB> }
TB> // много кода, полей, методов
TB>};
TB>template <typename T>
TB>SomeStruct__<T> SomeStruct(const T& t)
TB>{
TB> return SomeStruct__<T>(t);
TB>}
TB>
TB>Это конструкция случайно не имеет специального названия?
Ну как сказать... Приведенный мною пример немного проще, чем на самом деле.
Сама идея была в том, чтобы упростить жизнь при использовании классов и дать возможность передавать как обертку struct_t<T> так и T
в конструкторы. А я человек, прямо скажем, ленивый, и хотел эту мелкую проблему как то хитренько и быстренько обойти.
Не получилось, пришлось добавлять конструкторы с struct_t<T> и T.