我正在尝试为学校项目实现std::bind
,我可以将指针传递给它,使用0到6个参数(现在没有占位符)。它应该在C ++ 98中,我现在只使用auto。
它对于可调用对象也应该有效,但编译器不同意这一点。 我现在试图让它与0参数一起工作。
template<typename ReturnType>
Caller<ReturnType, ReturnType (*)(), typename Traits0::Type>
bind(ReturnType (*f)())
{
typedef TypeList0 ListType;
ListType l;
return Caller<ReturnType, ReturnType (*)(), ListType>(f, l);
}
编译器说:
main.cpp:54:16: error: no matching function for call to 'bind'
auto func6 = bind(&c);
^~~~
./bind.hpp:19:1: note: candidate template ignored: could not match 'type-parameter-0-0 ()' against 'Callable'
bind(ReturnType (*f)())
对于可调用对象是否有不同的语法,或者我只是搞砸了某个地方(非常可能)?
我的结构Callable:
struct Callable
{
void operator()()
{
std::cout << "Structure Callable" << std::endl;
}
};
main.cpp:
Callable c;
auto func6 = bind(&c);