При объявлении шаблонов функций возвращается запаздывание, синтаксис типа должен использоваться, если тип возврата будет зависеть от типа параметров.
При объявлении шаблонов функций возвращается запаздывание, синтаксис типа должен использоваться, если тип возврата будет зависеть от типа параметров.
Когда тип возврата шаблона зависит от типов параметров, использование запаздывания возвращается, синтаксис типа улучшает удобочитаемость кода значительно по сравнению с альтернативами.
Например, для определений из класса методов, с помощью запаздывания возвращаются, синтаксис типа избавляет вас от необходимости использовать полностью определенный тип возврата функции наряду с typename
ключевое слово. Например, вместо того, чтобы явным образом задать полностью определенный возврат вводят для aMethod
в этом примере:
template <typename T> class aClass { public: using vectorType = std::vector<T>; vectorType aMethod(T const&); }; //Difficult-to-read method definition //Part in bold indicates fully qualified return type of method template <typename T> typename aClass<T>::vectorType aClass<T>::aMethod(T const &) { };
template <typename T> class aClass { public: using vectorType = std::vector<T>; vectorType aMethod(T const&); }; template <typename T> auto aClass<T>::aMethod(T const &) -> vectorType { };
Средство проверки отмечает объявления шаблона функции, куда явным образом заданный возвращаются, тип функции шаблона имеет тот же осциллограф как сама функция шаблона.
Например, в предыдущем примере, функциональном aMethod
имеет тип возврата vectorType
, который имеет тот же осциллограф как aMethod
, а именно, класс aClass<T>
. Вместо того, чтобы явным образом задать полностью определенный тип возврата, можно использовать запаздывание, возвращают синтаксис типа.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: операторы объявления |