如何在 C++ 中创建无效函子 (使用洛基库)

发布于 2024-07-08 10:30:49 字数 507 浏览 6 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

⒈起吃苦の倖褔 2024-07-15 10:30:49

查看源代码,Functor 模板定义如下:

template <typename R = void, class TList = NullType,
        template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
    class Functor{...};

如下所述,不允许使用模板 typedef,因此需要指定所有类型(或接受所有默认值)。

您可以按如下方式定义并让默认值完成工作:

typedef Functor<> BitButtonPushHandler;

这会为我编译一个小型测试 Functor 类(不是实际的 Loki 类),并且我可以成功使用 typedef。

Looking at the source code, the Functor template definition is as follows:

template <typename R = void, class TList = NullType,
        template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
    class Functor{...};

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:

typedef Functor<> BitButtonPushHandler;

This compiles for me with a small test Functor class (not the actual Loki one), and I can use the typedef successfully.

奢望 2024-07-15 10:30:49

我最初写的有效...已经晚了,我忘记了...

using namespace Loki; 

...非常抱歉

What I originally wrote worked... it was late, and I forgot about...

using namespace Loki; 

...so sorry

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文