Возвращение ссылки на переменную члена, передаваемую ссылкой [Duplicate]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Возвращение ссылки на переменную члена, передаваемую ссылкой [Duplicate]

Сообщение Anonymous »

Я попытался реализовать функтор, который возвращает ссылку на поле структуры, которое передается как аргумент. Я хочу иметь возможность изменить поле структуры таким образом. < /P>
Я реализовал Getx1, который работает нормально. Чтобы избежать немного дублирования кода, я попытался реализовать тот же функтор, но со ссылкой на пересылку (GETX2). Он не компилируется при использовании GETX2, потому что, по -видимому, выведенный возвращаемый тип не является ссылкой и не является назначенным. < /P>
struct Point {
int x,y;
};

struct GetX1 {
const int& operator()(const Point& p) const {
return p.x;
}
int& operator()(Point& p) const {
return p.x;
}
};

struct GetX2 {
template
decltype(auto) operator()(T&& p) const {
return p.x;
}
};

void test(Point& p)
{
GetX1{}(p) = 0;
GetX2{}(p) = 0; // does not compile

// std::is_reference_v is false.
}

< /code>
Я немного потерян здесь. Я ожидаю, что функтор GETX2 вернет константу и при получении точки констатации и в качестве ввода и возврата INT & при получении точки и в качестве ввода, но это, по -видимому, не так. Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-referen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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