0
私はプログラム以下の持っている、それは動作します:私は(参照を受け取り、とrefを追加するために、Fを変更した場合に結合する)std :: bindは参照では動作しませんか?
#include<iostream>
#include<functional>
using namespace std;
using namespace std::placeholders;
void f(int i,int j){
++i;
++j;
}
int main(){
int i=0;
int j=0;
bind(&f,_1,i)(3);
bind(&f,j,_1)(4);
return 0;
}
しかし:まあ、コンパイルに失敗し
#include<iostream>
#include<functional>
using namespace std;
using namespace std::placeholders;
void f(int &i,int &j){
++i;
++j;
}
int main(){
int i=0;
int j=0;
bind(&f,_1,ref(i))(3);
bind(&f,ref(j),_1)(4);
return 0;
}
を:
打ち鳴らす--std = C++ 11には、次のエラーを与える:
no matching function for call to object of type '__bind<void (*)(int &,
int &), std::__1::placeholders::__ph<1> &, int &>'
bind(&f,_1,i)();
それを修正するには?
使用ラムダ。少なくとも-std = C++ 14を使用してください! –
'f(i、4)'もエラーです。 – molbdnilo
std :: refは参照を作成せず、reference_wrapperを作成します。 – xaxxon