Имеет ли смысл auto function() -> decltype(auto)? [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Имеет ли смысл auto function() -> decltype(auto)? [дубликат]

Сообщение Anonymous »

У меня есть следующий класс с двумя функциями получения:
class Class
{
public:
auto& get() { /* implementation omitted */ }; // call this function 1
const auto& get() const { /* implementation omitted */ }; // call this function 2
//... rest omitted
};

Поскольку базовый код, с которым я имею дело, сильно шаблонизирован, его трудно обойти, используя ключевое слово auto.
Кроме того, я имею дело с стандарт кода, который запрещает мне использовать auto без конечного возвращаемого типа.
Перепишем вышеприведенное с помощью:
auto get() -> decltype(auto); // function 1
auto get() const -> decltype(auto); // function 2

соответствует указанному стандарту кода. Я пробовал другие комбинации, например
auto& get() -> decltype(auto);
auto get() -> decltype(auto&);

но они не компилируются. Первый дает:
function with trailing return type has 'auto&' as its type rather than plain 'auto'

Второй дает:
error: expected ')' before '&' token

Сохраняет ли приведенное выше решение исходное поведение? То есть, если я это сделаю:
int main()
{
Class myObj{};
auto& a{myObj.get()}; //

Подробнее здесь: https://stackoverflow.com/questions/784 ... make-sense

Вернуться в «C++»