渡したいのですが、FuncTest2::bのみがうまく渡せて、他が渡せない理由がわかりません。
FuncTest2::bも暗黙的に型変換されているはずなので、"うまく"というのもおかしな話ですが。
ご教授願います。
#include <functional>
class FuncTest {
public:
std::function<void(void)> _f;
FuncTest(std::function<void(void)>& f) :_f(f){}
};
class FuncTest2 {
std::function<void(void)> f = []() {std::cout << "f" << std::endl; };
void g(void) { std::cout << "g" << std::endl; }
FuncTest a(FuncTest2::f); //NG
FuncTest b = FuncTest2::f; //OK
FuncTest c(FuncTest2::g); //NG
FuncTest d = FuncTest2::g; //NG
};
[\code]