如何在 C++ 中创建无效函子 (使用洛基库)
使用 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”的函数中
任何熟悉此库的人都知道如何使第一行工作吗?
Writing something like this using the loki library,
typedef Functor<void> BitButtonPushHandler;
throws a compiler error, but this works
typedef Functor<void,TYPELIST_1(Matrix3D*)> Perspective;
Functor.h:530: error: '((Loki::FunctorHandler, int>*)this)->Loki::FunctorHandler, int>::f_' cannot be used as a function
Functor.h:530: error: return-statement with a value, in function returning 'void'
Anyone familiar with this library know how to get the first line working?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看源代码,Functor 模板定义如下:
如下所述,不允许使用模板 typedef,因此需要指定所有类型(或接受所有默认值)。
您可以按如下方式定义并让默认值完成工作:
这会为我编译一个小型测试 Functor 类(不是实际的 Loki 类),并且我可以成功使用 typedef。
Looking at the source code, the Functor template definition is as follows:
As commented below, there are no template typedefs allowed, so all types (or accept all defaults) need to be specified.
You can just define as follows and let the defaults do the work:
This compiles for me with a small test Functor class (not the actual Loki one), and I can use the typedef successfully.
我最初写的有效...已经晚了,我忘记了...
...非常抱歉
What I originally wrote worked... it was late, and I forgot about...
...so sorry