Generic functions

Сергей Прейс
Сергей Прейс

Иногда хочется написать какую-нибудь небольшую обобщенную функцию и запись через  template выглядит громоздко

template<typename T>
T sqr(const T& v) { return v*v; }

Вместо этого куда красивее было бы 

auto sqt(const auto& v) {return v*v;}

 

 

1
рейтинг
5 комментариев
ru.night.beast
Надо ждать концепты. Там что-то похожее было.
ru.night.beast
d-yaroshev
Поясню про "что-то похожее". auto - самый базовый concept. Соответственно, если можно будет написать любой concept в качестве параметра, можно написать и auto.
d-yaroshev
yndx-antoshkka
Нечто подобное обсуждается при разговорах о Conxepts. К чему люди в комитете придут - пока непонятно. Ну а до тех пор, можно использовать подобный хак из Boost.Hana:

constexpr auto sqrt = [](const auto& v) { return v*v; };
yndx-antoshkka
smertigdon
yndx-antoshkka, а почему хак из Hana? Обычная полиморфная лямбда
smertigdon
dmitriy@izvolov.ru
ГЦЦ, кстати, уже давным-давно такое умеет:
godbolt.org/g/47ft85
dmitriy@izvolov.ru
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).