Я думаю (думал), я понимаю auto. То же о decltype. Однако в С++ 14 в качестве возвращаемого типа функции может быть какая-то дьявольская вещь вроде decltype(auto). Рассмотрим следующее:
decltype(auto) foo()
{
int m = 1;
return m;
}
Тип возврата int, все имеет смысл.
Однако
decltype(auto) foo()
{
int m = 1;
return (m);
}
возвращает int& (т.е. ссылку на int).
У меня абсолютно НЕ ИДЕЯ, почему это происходит, почему эти круглые скобки имеют какое-то значение!? Надеюсь, кто-то может пролить свет на это.
PS: Я также отметил C++, так как есть еще много людей, которые проверяют тег C++, чем C++14.