При объявлении шаблонов функций возвращается запаздывание, синтаксис типа должен использоваться, если тип возврата будет зависеть от типа параметров
При объявлении шаблонов функций возвращается запаздывание, синтаксис типа должен использоваться, если тип возврата будет зависеть от типа параметров.
Когда тип возврата шаблона зависит от типов параметров, использование запаздывания возвращается, синтаксис типа улучшает удобочитаемость кода значительно.
Например, для определений из класса методов, с помощью запаздывания возвращают средние значения синтаксиса типа, что вы не должны использовать полностью определенный тип возврата функции наряду с 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>
. Вместо того, чтобы явным образом задать полностью определенный тип возврата, можно использовать запаздывание, возвращают синтаксис типа.
Поскольку C++ 14 включил вычет возвращаться-типа, можно использовать auto
ключевое слово, чтобы объявить типовые шаблоны при исключении запаздывания возвращает тип. В таких случаях Polyspace® не повышает нарушение.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: операторы объявления |
Категория: необходимый, автоматизированный |