Здравствуйте, collider, Вы писали:
TB>>Хорошая загадка: "функция принимает параметр типа T, я в неё запихиваю параметр типа int, угадай T".
TB>>Ещё хорошая загадка: "функция принимает параметр типа std::vector<T>, я в неё запихиваю параметр типа std::vector<int>, угадай T".
TB>>Плохая загадка: "функция принимает параметр типа some_struct<T>, я в неё запихиваю параметр типа int, угадай T".
TB>>Ты видишь разницу между третьей загадкой и первыми двумя?
C>Неа, все 3 имеют одну единственно правильную отгадку
А разницу в трудоёмкости определения T ты тоже не видишь? Ты не видишь, что в первых двух случаях всё сводится к тавтологии, а в третьем надо хз как перебрать все варианты?
Вот тебе ещё три загадки, отвечай быстро:
1. 5=x; найти икс
2. e
5=e
x; найти икс
3. 5=e
x; найти икс
Что, на третьей споткнулся, полез в калькулятор?
C>одну единственно правильную
Да, и как ты это докажешь? Компилятор должен все-все-все возможные специализации перепроверить?
И ещё, ты в курсе, что у тебя some_struct<std::vector<int> > тоже будет иметь конструктор, принимающий int?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте