Напечатайте Вывод с & quot; auto; & quot;

  1. От Википедия

    Какая польза от ключевого слова auto
    в этом случае (ниже), если не автоматическое удержание типа?

    struct SomeStruct {
    auto func_name(int x, int y) -> int;
    };
    
    auto SomeStruct::func_name(int x, int y) -> int {return x + y; }
    
  2. В каких ситуациях нужно эксплицитно есть типы?

0

Решение

Это конечный тип возврата. auto это просто заполнитель, который указывает, что возвращаемый тип приходит позже.

Причина этого заключается в том, что имена параметров могут использоваться при вычислении возвращаемого типа:

template<typename L, typename R>
auto add(L l, R r) -> decltype(l+r) { return l+r; }

Альтернатива:

template<typename L, typename R>
decltype(std::declval<L>()+std::declval<R>())
add(L l, R r)
{ return l+r; }

Вполне вероятно, что в будущем добавление к языку позволит пропустить завершающий тип возврата и вместо этого использовать автоматическое вычитание типа, как это разрешено для лямбд.

template<typename L, typename R>
auto add(L l, R r) { return l+r; }
10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]