使用 loki 库写这样的东西,
typedef Functor<void> BitButtonPushHandler;
抛出编译器错误,但这有效
typedef Functor<void,TYPELIST_1(Matrix3D*)> Perspective;
Functor.h:530: 错误: '((Loki::FunctorHandler, int>*)this)->Loki::FunctorHandler, int>::f_' 不能用作函数 Functor.h:530:错误:带有值的返回语句,在返回“void”的函数中
熟悉这个库的人知道如何让第一行工作吗?
查看源码,Functor模板定义如下:
template <typename R = void, class TList = NullType,
template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
class Functor{...};
如下所述,不允许使用模板类型定义,因此需要指定所有类型(或接受所有默认值)。
您可以按如下方式定义并让默认值完成工作:
typedef Functor<> BitButtonPushHandler;
这会为我编译一个小型测试 Functor 类(不是实际的 Loki 类),并且我可以成功使用 typedef。
我最初写的有效...已经晚了,我忘记了...
using namespace Loki;
...非常抱歉