Я прочитал статью о auto
выводе типа с помощью decltype
, и мне интересно, верна ли моя логика относительно того, как выводится тип в приведенном ниже примере (поэтому, если я ошибаюсь, исправьте меня :)
#include <iostream>
using namespace std;
class Widget
{
public:
Widget() = default;
};
int main()
{
Widget w;
const Widget& cw = w; // cw is const Widget&
auto myWidget1 = cw; // (1) myWidget1 is Widget
decltype(auto) myWidget2 = cw; // (2) myWidget2 is const Widget&
}
До сих пор я понимал, что:
для 1 : используется автоматическое удержание типа, и в этом случае оно похоже на удержание типа temlpate для передаваемых по значению параметров.Это означает, что cv-квалификаторы и ссылки игнорируются, что приводит к Widget
как типу в конце.
для 2 : используется тип decl, а затем передается auto, что на самом делеcw
const Widget &, а затем все установлены, и тип является const Widget &.
Так что я написал / понял правильно или неправильно?
Спасибо