I stumbled upon this strange behaviour.
#include <iostream>
#include <functional>
struct adder {
auto add(int x, int y) -> int {
return x + y;
}
};
auto main() -> int {
std::cout << std::invoke(&adder::add, *static_cast<adder*>(nullptr), 1, 2) << '\n';
return 0;
}
It was compiled with gcc version 11.3.0 on Ubuntu Ubuntu1 22.04
When i run it, it returns 3.
I understand why it is possible since adder, at this point, is more or less just like a namespace. And when I add some state to the struct I get a segmentation fault like expected.
Is this part of the standart or maybe just a gcc thing?