Информация об изменениях

Сообщение Re[3]: template (синтаксис) больше не нужен? от 05.11.2023 21:07

Изменено 05.11.2023 22:23 rg45

Re[3]: template (синтаксис) больше не нужен?
Здравствуйте, johny5, Вы писали:

J>
J>auto find(const auto& container, const auto& key) requires (!HasFind<decltype(container), decltype(key)>)
J>{
J>    return std::find(container.begin(), container.end(), key);
J>}
J>


auto — конечно, мощная штука, но даже хорошими штуками злоупотреблять не стоит. Нужно понимать, что для того, чтоб вывести тип результата такой функции, комилятор должен сперва инстанцировать ее. На этом можно строить всякие интересные фишечки, например компайл-тайм счетчик. Но бывает и наоборот, когда необходимость инстанцирования оказывается совсем не к месту.
Re[3]: template (синтаксис) больше не нужен?
Здравствуйте, johny5, Вы писали:

J>
J>auto find(const auto& container, const auto& key) requires (!HasFind<decltype(container), decltype(key)>)
J>{
J>    return std::find(container.begin(), container.end(), key);
J>}
J>


auto — конечно, мощная штука, но даже хорошими штуками злоупотреблять не стоит. Нужно понимать, что для того, чтоб вывести тип результата такой функции, комилятор должен сперва инстанцировать ее. На этом можно строить всякие интересные фишечки (например компайл-тайм счетчик). Но бывает и наоборот, когда необходимость инстанцирования оказывается совсем не к месту.