Вызов сеттера с помощью 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; }
→ Ссылка