问题标签 [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.
c++ - 创建integral_constants的任意元组的通用实用程序
利用Scott Schurr 的str_const
我有一个constexpr
字符串。
我有另一个constexpr
函数,它返回在字符串中找到的第一个插入符号的位置,从位置 n 开始:
我可以使用 of 的结果为 a ofcaretPos
创建一个 typedef ,其中元组的大小是在字符串中找到的插入符号的数量,每个元组元素都是一个整数常量,其值是插入符号在字符串中的位置。std::tuple
std::integral_constants
这里我手动构造了这个元组:
问题:
我现在想将其推广到任何具有任意数量的脱字符号的输入字符串。
如何Ns...
使用caretPos
或其他方式生成此处所需的序列?
c++14 - 如何使用 Boost.Hana 来确定仿函数是否具有可以使用特定模板参数调用的调用运算符?
在我的应用程序中,我想在编译时确定任意仿函数类型是否Func
具有可以使用给定显式模板参数调用的空调用运算符T
。根据我找到的以前的 SO 答案,我想出了以下内容:
我希望这个例子能打印出来:
由于char
模板参数类型enable_if
在foo
. 我尝试了以下编译器:
- 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
新元编程模型。
c++ - hana::tuple to auto && ... args
有没有办法使用类似的东西:
有类似的东西:
因为使用该代码,unpack
无法推断出 lambda/函数类型。基本上我想创建一个接受参数列表的类型,但我有一个包含参数的元组。
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
c++ - hana::second 无法推断类型
我正在尝试hana::type
使用hana::second
...
但我收到以下编译器错误:
为什么没有按预期hana::second
返回包含的结果?hana::type
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.
c++ - 将 constexpr 结构转换为运行时结构
我正在尝试使用模板类(此处Foo
),其基本类型如下:
hana::tuple<hana::pair<hana::type<int>, Runtime>>
与Runtime
一个显然不可能的课程constepxr
。
但是可以通过多种方式构造类型,这就是我使用的原因:
hana::tuple<hana::pair<hana::type<int>, hana::type<Runtime>>>
在编译时完成工作。
所以问题基本上是如何从第一个元组类型转换为第二个元组类型。我想知道是否有什么hana
可以帮助我。甚至更好的是,关于这种“转换”的一些提示。
正如你所看到的,我convertMap
用hana::transform
and尝试了一些 c++1z lambdas
,但是第二个元组不能constexpr
,所以我不能把它传递给hana::make_type
希望得到一个hana::type_c
.
c++ - 自定义开关功能中的大量神秘错误
我正在尝试根据boost hana 手册any
中的类型开关示例编写一个任意值开关。
我以前成功地做到了这一点,但现在似乎无法完成。
我真的很想弄清楚我的解决方案到底出了什么问题,所以事不宜迟:
这应该像any
示例一样使用,但具有值:
但是我得到了一个关于在分配in时使用hana::find_if_t::operator()(Xs&&, Pred&&)
before deduction of的非常长而且非常神秘的错误。auto
default_
switch_
有人可以在这里指出我正确的方向吗?
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?
c++ - 在扣除 auto 之前使用 boost::hana::eval_if_t
一个代码片段说的不止几段:
编译器错误是:
没有递归,我使用 gcc-6.0.2,它可能已经解决了一些错误,decltype(auto)
并且具有完整的 C++14 实现,并且也符合boost::hana
要求,所以,我的错误必须在我的实现中,但我不知道错误是什么。
注意:clang++ 3.8.0 会引发类似的编译器错误。