我有以下代码片段.
#include <iostream> #include <functional> using namespace std; struct A { A() { cout << "A "; data = 1; } A(const A& a) { cout << "cA "; data = a.data; } ~A() { cout << " dA"; } int data; }; void f(A& a,function<void(A)> f) { cout << "("; f(a); cout << ")"; } int main() { A temp; auto fun = [](A a) {cout << a.data;}; f(temp,fun); }
输出是:
A (cA cA 1 dA dA) dA
为什么临时复制两次?
我正在使用Visual C(vc140).