bind
各呼び出しで異なるパラメーター タイプを使用しているにもかかわらず、両方のバージョンが問題なくコンパイルおよび動作するのはなぜですか?
- バージョン 1 -> パラメータ foo vs.
- バージョン 2 -> foo のパラメーター アドレス
バージョン 1 でコンパイル エラーが発生することを期待していました...
#include <iostream>
#include <functional>
using namespace std;
class Test
{
public:
bool doSomething(){ std::cout << "xxx"; return true;};
};
int main() {
Test foo;
// Version 1 using foo
std::function<bool(void)> testFct = std::bind(&Test::doSomething, foo);
// Version 2 using &foo
std::function<bool(void)> testFct2 = std::bind(&Test::doSomething, &foo);
testFct();
testFct2();
return 0;
}