Разная запись объявления и определения функции-члена класса

Можно ли по-разному записывать объявление и определение шаблонного класса?

Например, есть класс:

template<class T> 
struct A {
    using value_type = T;    
    
    value_type foo() const;
};

Можно ли определить его функцию-член как:

template<class T>
auto A<T>::foo() const -> value_type {
    return 42;
}

чтобы не писать такое длинное определение:

template<class T>
typename A<T>::value_type A<T>::foo() const {
    return 42;
}

Если можно, то считается ли это нормальным стилем C++ программирования или лучше чтобы всё было в 1 стиле написания? Как лучше всего записывать подобные длинные определения в целом?


Ответы (1 шт):

Автор решения: cock

"Можно ли по-разному записывать объявление и определение шаблонного класса?" - можно.

"Если можно, то считается ли это нормальным стилем C++ программирования или лучше чтобы всё было в 1 стиле написания? Как лучше всего записывать подобные длинные определения в целом?" - нормально, хотя обычно придерживаются одного стиля.

→ Ссылка