Следующая программа компилируется как с gcc, так и с clang, но является ли это фактически стандартным С++ 11 или оба компилятора предпочитают поддерживать его для удобства?
struct Foo {
int i;
void bar() { std::cout << i << std::endl; }
};
int main() {
std::function<void(Foo*)> method = &Foo::bar;
Foo myFoo{4};
method(&myFoo); // prints 4
}
Это, конечно, удобно, но я не понимаю, как это работает.