我有以下C++ 11代码:
#include <iostream>
#include <functional>
using namespace std;
using namespace placeholders;
void f(int a, int b)
{
cout << a << " " << b << endl;
}
void g(int& a, int& b)
{
a *= 2;
b *= 3;
}
int main()
{
int a = 100;
int b = 200;
auto greversed = bind(g,_2,_1);
greversed(b,a);
f(a,b);
greversed(ref(b),ref(a));
f(a,b);
}
Run Code Online (Sandbox Code Playgroud)
基于我对"The C++ Programming Language 4th Edition"(Stroustrup)的解读.968我希望在第一次调用greversed(b,a)期间a和b的副本将通过引用传递给g()并且只有第二个调用实际上会通过引用将a和b传递给g() .
p上给出的示例代码.968:
void incr(int& i)
{
++i;
}
void user()
{
int …Run Code Online (Sandbox Code Playgroud)