问题标签 [boost-hana]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
227 浏览

c++ - Boost Hana any_of?

So I tried to use Boost Hana's any_of method, but unlike the description in the implementation, it still calls the element after the element that first satisfied the predicate. Is this a know bug ?

Here is an MCVE:

#xA;

Output:

#xA;
0 投票
3 回答
1511 浏览

c++ - C++14 元编程:在编译/初始化时自动构建类型列表

使用 C++14 和 Curiously Recurring Template Pattern (CRTP) 和可能的 Boost.Hana(或者boost::mpl如果您愿意)的某种组合,我可以在编译时(或静态初始化时)构建类型列表而无需显式声明吗?

作为一个例子,我有这样的东西(见Coliru):

我想在创建时避免显式类型列表 -- D1D2D3--list因为这意味着当我似乎应该能够在类声明中或周围告诉编译器时,我必须手动维护该列表,"将此课程添加到您的跑步列表中”。(我的最终目标是自动化工厂注册,这是缺少的机制。)

我可以使用一些继承和/或元编程技巧在编译时或静态初始化时组成列表吗?

0 投票
2 回答
168 浏览

c++ - 用一个参数初始化 boost::hana::tuple

假设我们有这样的东西:某个类 Foo 的接口('FooInterface')和一个容器类 Bar,其中包含来自 'FooInterface' 的派生类。

现在,我将派生类('FooOne','FooTwo')的类型列表转发到容器类,并将它们的实例存储在小型类型计算之后的'boost::hana::tuple'中( 'FooTuple')。

现在如何根据 'FooList' 的大小,使用取消引用的 this 指针初始化元组元素?

MCVE(魔杖盒)

输出 :

0 投票
1 回答
423 浏览

c++ - Boost Hana 编译时列表转换

我试图弄清楚如何在编译时使用 boost:hana 转换整数常量列表。

我的清单如下:

我想应用这个功能:

然而

为 的 res 生成一个类型hana::tuple<int, int, int>。我没有看到如何将 lambda 的参数移动到模板参数中hana::int_c

0 投票
1 回答
219 浏览

c++ - std::is_arithmetic 为泛型 lambda 中的 int 类型返回 false:未定义的行为?

考虑:

现场观看

输出:

我试图用来std::is_arithmetic判断我是否正在处理数字而不是其他一些非算术类型,并相应地打印(或不打印)报价。

但由于某种原因,被“返回”(通过成员::value)的值是falseintcxxabi.h

正如您从输出中看到的那样,这会导致int用引号打印。

我的问题是:为什么它返回错误?这与通用 lambda 有什么关系?我可以修复它吗?

我实际上是直接在Coliru上测试的,所以你可以假设那里使用的任何 gcc 版本(目前是 6.3.0)。

0 投票
2 回答
292 浏览

c++ - boost hana:从集合和默认值创建地图

我有一个 boost::hana::set 类型,想用它创建一个映射,其中的值是布尔值。

0 投票
1 回答
119 浏览

c++ - 如何在相同的输入数据上加快许多不同的 hana::filters?

对不起,我的最小示例非常大。这是一个有效的 hana 算法,它基本上从所有转换的大元组中过滤出 8 个不同状态的转换。

虽然它可以工作,但它有点慢,特别是因为我实际上需要过滤 200 个州而不是 8 个州。我怎样才能让它更快?

0 投票
2 回答
284 浏览

c++ - 为编译时更改运行时研究

我正在尝试在 C++ 中实现一个通用 ECS 库以用于学习目的。我想了很多方法来实现,但我总是遇到问题。所以,如果你能帮我解决这个问题:

假设我有一个constexpr hana::tuple组件hana::type_c,例如:

而现在我有了一个组件存储类型,这里没有问题,所以我们称之为Storage(每个组件的类型不同):

我想将每个组件或每个组件组与其Storage类型相关联。所以最简单的方法是做这样的事情:

但现在的问题是运行时。如果我初始化该元组但使用真正的 Storage 而不再type_c<Storage>,我将不得不遍历元组以找到Storage我需要的。所有这些都在运行时没有?这真的很糟糕,我的上一个版本有类似的东西Component::getStorage()而且它是免费的(但更具限制性)。

所以问题是:我怎样才能拥有一些getStorage<Component>()在运行时不花钱的功能?好吧,我的意思是只返回存储的引用。

编辑:到目前为止我认为的唯一方法很简单(听起来不错)。

伪代码

至少是这样的:

像这样我应该能够在编译时找到索引并在运行时访问正确的元素。但我是元编程的新手,所以我想有人可以做得更好。

0 投票
1 回答
119 浏览

c++ - 使用 Boost Hana 处理部分类型

我在这里所说的部分类型是这样的:

我认为它不适合 hana 哲学,如果我想拆分更多类型,它是不可读的。

那么使用 Boost Hana 执行此操作的有效方法是什么?

编辑 :

我的意思是,一种允许用户通过几个步骤创建最终类型的方法。就像他们可以使用一些部分类型来生成每个最终类型一样。但是使用通常的语法和hana::type.

0 投票
0 回答
522 浏览

c++ - BOOST_HANA_ADAPT_STRUCT 与继承?

有没有办法将 BOOST_HANA_ADAPT_STRUCT 宏用于从基本结构继承的结构而不重复基本结构的访问器?

现在我有类似于以下示例的内容: