тип и его используют с мета программированием, но конкретный пример себе представить не могу
для возвращаемого значения функции auto foo(int x) -> decltype(sin(x)) { return sin(x); }
auto ведь итак поймет что вернуть
бывает сложная шаблонная магия, когда так просто не вернёт, если найду у себя пример скину
А можете вкратце обьяснить почему auto не всегда может определить тип в случае с темплейтами?
Auto не сохраняет const и &, decltype ведёт себя строже
Это я знаю, но в чем суть ?
суть в том, что можно почитать как ведут себя auto и decltype(auto)
Да читал я, и не увидел конкретного примера для decltype
https://habr.com/ru/post/206458/
Спасибо, почитаю
https://en.cppreference.com/w/cpp/language/auto тут ещё можете посмотреть примеры
template<auto n> // C++17 auto parameter declaration auto f() -> std::pair<decltype(n), decltype(n)> // auto can't deduce from brace-init-list { return {n, n}; }
Да вот уже отличный пример
Если тебе нужно преобразование типа при возврате, то не поймёт
Что будет в шаблонном коде, если в return expr; возникнет ошибка? А чем отличается случай, когда та же ошибка случится при выводе возвращаемого типа через decltype? И при чём здесь SFINAE?..
и то и другое на этапе компиляции
Обсуждают сегодня