Вызов сеттера с помощью std::invoke() не работает
#include <functional>
struct A {
void set(int x) { x = x; }
int x;
} a;
int main() {
std::invoke(&A::set, a, 42);
return a.x;
}
Почему программа возвращает 0, а не 42?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вот здесь
void set(int x) { x = x; }
int x скрывает член класса x и вы присваиваете переданный аргумент самому себе...
Вот так сделайте:
void set(int y) { x = y; }