#include <functional>
#include <iostream>
struct Test
{
void fnc(int & a) { ++a; }
};
int main ()
{
typedef std::function<void(int)> Func;
int i = 0;
Test t;
Func f = std::bind(&Test::fnc, &t, std::ref(i));
//f(); //error C2064: term does not evaluate to a function taking 0 arguments
f(37); //Here I am forced to pass evidently unused int
std::cout << i;
}
私はそれを正しく使用しますか?
ランダムなintを渡す必要が本当にありますか?
もしそうなら、それはなぜですか?これは、テンプレートの魔法が限られているためであり、実際にintを関数に渡してintを取得する必要があるためですか、それとも何らかの目的で設計されているためですか?(たとえば、関数の宣言がすでにどのようになっているのかを忘れないようにユーザーに強制しますか?)
vs2012を使用します