问题标签 [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 投票
3 回答
510 浏览

c++ - 创建integral_constants的任意元组的通用实用程序

利用Scott Schurr 的str_const我有一个constexpr字符串。

我有另一个constexpr函数,它返回在字符串中找到的第一个插入符号的位置,从位置 n 开始:

我可以使用 of 的结果为 a ofcaretPos创建一个 typedef ,其中元组的大小是在字符串中找到的插入符号的数量,每个元组元素都是一个整数常量,其值是插入符号在字符串中的位置。std::tuplestd::integral_constants

这里我手动构造了这个元组:

问题:

我现在想将其推广到任何具有任意数量的脱字符号的输入字符串。

如何Ns...使用caretPos或其他方式生成此处所需的序列?

工作示例

0 投票
1 回答
290 浏览

c++14 - 如何使用 Boost.Hana 来确定仿函数是否具有可以使用特定模板参数调用的调用运算符?

在我的应用程序中,我想在编译时确定任意仿函数类型是否Func具有可以使用给定显式模板参数调用的空调用运算符T根据我找到的以前的 SO 答案,我想出了以下内容:

我希望这个例子能打印出来:

由于char模板参数类型enable_iffoo. 我尝试了以下编译器:

  • Apple clang v8.0.0:示例按预期编译和运行。
  • mainline clang v3.9.1+(通过 Wandbox):该示例按预期编译和运行。
  • mainline clang v3.6.0 - v3.8.1(通过 Wandbox):编译器因内部错误而死。
  • g++ 7.0 主干,20170410(通过 Wandbox):编译失败并出现以下错误:

    /li>

它似乎不喜欢我使用hana::is_valid()来判断指定的操作符是否存在。但是,我认为我使用它的方式与其预期用途一致。

这是 gcc 中的错误,是当代 clang 版本中更宽松的实现,还是我错误地实现了这种类型的检查?看起来这绝对是在 Hana 的驾驶室里;我只是想了解一下它的constexpr新元编程模型。

0 投票
2 回答
343 浏览

c++ - hana::tuple to auto && ... args

有没有办法使用类似的东西:

有类似的东西:

因为使用该代码,unpack无法推断出 lambda/函数类型。基本上我想创建一个接受参数列表的类型,但我有一个包含参数的元组。

0 投票
1 回答
456 浏览

c++ - 连接 Boost Hana 字符串

尝试连接 Boost Hana 编译时字符串会在我的应用程序中产生编译器错误。是否需要激活任何特定的配置选项或需要包含标题才能使其正常工作?

这是一个例子:

error: no match for ‘operator+’ (operand types are ‘boost::hana::string<'l', 'e', 'f', 't', ',', ' '>’ and ‘boost::hana::string<'r', 'i', 'g', 'h', 't'>’) 这在 GCC 6.3.1 上失败并出现错误。来自 Boost 1.62.0 的 Hana

作为旁注,将操作员替换为+失败hana::plus并出现错误hana::plus(x, y) requires 'x' to be a Monoid

0 投票
1 回答
181 浏览

c++ - hana::second 无法推断类型

我正在尝试hana::type使用hana::second...

但我收到以下编译器错误:

为什么没有按预期hana::second返回包含的结果?hana::type

0 投票
2 回答
1570 浏览

c++ - Why is this nested lambda not considered constexpr?

I'm trying to create a curried interface using nested constexpr lambdas, but the compiler does not consider it to be a constant expression.

I post a question earlier because I found a different minimal example, but it wasn't enough.

Error:

__closure is not a constant expression : if someone could explain me this error that would be a great help. I ran into that error before but can't remember why.

0 投票
1 回答
357 浏览

c++ - 将 constexpr 结构转换为运行时结构

我正在尝试使用模板类(此处Foo),其基本类型如下:

  • hana::tuple<hana::pair<hana::type<int>, Runtime>>Runtime一个显然不可能的课程constepxr

但是可以通过多种方式构造类型,这就是我使用的原因:

  • hana::tuple<hana::pair<hana::type<int>, hana::type<Runtime>>>在编译时完成工作。

所以问题基本上是如何从第一个元组类型转换为第二个元组类型。我想知道是否有什么hana可以帮助我。甚至更好的是,关于这种“转换”的一些提示。

正如你所看到的,我convertMaphana::transformand尝试了一些 c++1z lambdas,但是第二个元组不能constexpr,所以我不能把它传递给hana::make_type希望得到一个hana::type_c.

0 投票
1 回答
136 浏览

c++ - 自定义开关功能中的大量神秘错误

我正在尝试根据boost hana 手册any中的类型开关示例编写一个任意值开关。

我以前成功地做到了这一点,但现在似乎无法完成。

我真的很想弄清楚我的解决方案到底出了什么问题,所以事不宜迟:

这应该像any示例一样使用,但具有值:

但是我得到了一个关于在分配in时使用hana::find_if_t::operator()(Xs&&, Pred&&)before deduction of的非常长而且非常神秘的错误。autodefault_switch_

有人可以在这里指出我正确的方向吗?

0 投票
0 回答
61 浏览

c++ - Simple boost::hana example creates an internal compiler error

Experimenting with boost::hana (version 1.1.0), and compiling with g++ 6.2.0, I get a compiler error with that sample:

And the compiler generates an internal error:

Is that a gcc bug? Can anybody try to replicate this error?

0 投票
1 回答
350 浏览

c++ - 在扣除 auto 之前使用 boost::hana::eval_if_t

一个代码片段说的不止几段:

编译器错误是:

没有递归,我使用 gcc-6.0.2,它可能已经解决了一些错误,decltype(auto)并且具有完整的 C++14 实现,并且也符合boost::hana要求,所以,我的错误必须在我的实现中,但我不知道错误是什么。

注意:clang++ 3.8.0 会引发类似的编译器错误。