это не фундаментальная проблема а просто не реализован хинт для конкретной ошибки
Нету там никакого хинта. И нормальный язык работает не так, чтобы для каждой ошибки костылять. И чтобы тебе получить там ошибку - тебе как раз таки и нужно добавлять трейс, т.е. рисовать все те же 20 уровней вложенности
единственная разница здесь в том, что 20 у тебя не будет. Не не потому, что "круто", а потому что это будет настолько нечитаемое и ненаписуемое дерьмо, что его никто написать не может
и вот как раз таки проблема num vs add следует из этого. У скриптухи есть фундаментальное противоречие. У тебя всегда трейдофф между общим интерфейсом и частным
единственная разница здесь в том, что 20 у тебя не будет. Не не потому, что "круто", а потому что это будет настолько нечитаемое и ненаписуемое дерьмо, что его никто написать не может
неописуемое дерьмо обычно эпитет для темплейт ошибок
если ты используешь более общий - ты получаешь лишние ограничения, что ограничивает обобщённость. Если используешь более частный - ты обязан все тысячи эти частных случаев писать руками
если ты используешь более общий - ты получаешь лишние ограничения, что ограничивает обобщённость. Если используешь более частный - ты обязан все тысячи эти частных случаев писать руками
что поделать, оказывается это лучше чем обе крайности
окей, что насчет контракта функции? Как мне не проверяя рекурсивно все раскрытия темплейтов понять какой интерфейс у функции?
Ты ничего и не поймёшь итак. Вся куллстори с "Контрактами" - это мифилогия. Ты не покажешь ни одного примера, кроме хеловорлда мономорфного уровня "у меня тут int". В реальности у тебя будет лапша из констрейтов, которые непонятно что делают и их будут десятки штук. И подобный интерфейс дерьма уже не читаемый по определению
и ты будешь до посинения компилировать этот код, как это делают все. Никогда, кроме примитивных случаев, ты не будешь заранее знать что тебе нужно описать у своего типа, чтобы соответствовать ограничениям