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