Мой код:
#include <iostream>
#include <functional>
using namespace std;
struct A {
A() = default;
A(const A&) {
cout << "copied A" << endl;
}
};
void foo(A a) {}
int main(int argc, const char * argv[]) {
std::function<void(A)> f = &foo;
A a;
f(a);
return 0;
}
Я дважды вижу "скопировано A" на консоли. Почему объект копируется дважды, а не один раз? Как я могу предотвратить это должным образом?