我有一个 class Foo ,它可以由 C 风格的字符串、字符串视图和非临时字符串构造(实际上它包含其他成员和方法,并且它在传递给basic_string*模板的字符上进行模板化):struct Foo { explicit constexpr Foo() : text{} ...
我有一个 class Foo ,它可以由 C 风格的字符串、字符串视图和非临时字符串构造(实际上它包含其他成员和方法,并且它在传递给basic_string*模板的字符上进行模板化):struct Foo { explicit constexpr Foo() : text{} ...
一方面,function boost::hana::is_valid呈现如下检查 SFINAE 友好的表达式是否有效。 给定一个 SFINAE 友好的 function, is_valid返回 function 调用是否对给定的 arguments 有效。 具体来说,给定一个 function f ...
Boost.Hana提供boost::hana::is_valid来检查 SFINAE 友好的表达式是否有效。 你可以像这样使用它 struct Person { std::string name; }; auto has_name = hana::is_valid([](auto ...
假设我有以下结构: 我想使用 boost-hana 获取结构中的字段数。 如何获取 boost-hana 适应结构中的字段数? ...
我正在尝试过滤hana::tuple_t ,根据我的理解,它只是hana::type对象的hana::tuple 。 我查看了文档中示例中的一些代码,它们是:template <typename Any> auto switch_(Any& a) { return [&am ...
这个 function 用任何int输入,按值返回std::vector<int> :auto make = [](int){ return std::vector<int>{1,2,3}; }; 因此,这样的事情是行不通的std::vector<int&g ...
tl;博士 我想了解下面第一个代码有什么问题,即错误告诉我什么。 地雷 我已经能够将示例缩短为以下内容,这会产生与以下原始代码相同的错误: #include <boost/hana/functional/overload.hpp> auto l1 = [](int){}; u ...
我正在使用boost::hana::string的编译时特性来为 GUI 生成 xaml 标记字符串。 我正在使用配置为 C++17 语言的 VS2017,但有时字符串太长以至于我收到了来自编译器的下一条消息: 如果我从字符串中删除几个字符,一切都很好,所以我猜是长度相关的。 下一个代码在 gcc ...
我正在尝试按顺序获得boost::hana::string插入元组中,通过数组中的std::string_view名称查找(请检查代码,那里比我的话更容易理解)。 我明白了,但是语法确实变得混乱并且失去了不言自明的含义,因为需要调用两个函数(1个fn获取索引,1个templ.fn por获取字符串) ...
我正在开发一个基于 mfc 的 GUI。 其中一个控件允许标记语言 (XAML) 在其中呈现文本和图标,因此我正在大量使用它。 所有控件的标记字符串几乎相同(一个表单中的 12 个),所以我想知道是否可以通过 function 来生成该字符串。 所以控件是预定义的并且在执行过程中不会改变,我想在编译 ...
在boost::hana::always的文档页面上,我读到了 always(x)是一个 function 使得 对于任何y... 这让我认为它的行为不应该与这个 lambda: [](auto const&...){ return false; } [](auto const& ...
类型hana::optional表示一个可选值,其可选性在编译时已知它模拟了Monad的概念等。 由于它是编译时可选的,因此如果我尝试hana::flatten一个不包装另一个hana::optional的非空hana::optional在运行时会发生什么的问题是没有意义的,因为因为该错误将在编译 ...
前言我问了一个类似的问题:假设我有一个谓词auto p1 = [](int x){ return x > 2; } auto p1 = [](int x){ return x > 2; }和一个谓词auto p2 = [](int x){ return x < 6; } aut ...
/usr/include/boost/hana/transform.hpp中用于打开和关闭namespace的两个宏的众多示例之一:BOOST_HANA_NAMESPACE_BEGIN // stuff BOOST_HANA_NAMESPACE_END 这些宏在/usr/include/boo ...
我有以下 AST 实现,使用 C++17 的std::variant类型构建,我想在其上递归地应用访问者。 我在 Boost 的 Hana 库中的一些实用程序的帮助下完成了这项工作。#include <iostream> #include <memory> #include ...
我想将多个 lambda 链接/组合到一个新的 lambda。 当使用参数调用新的 lambda 时,它应该使用这些参数调用原始 lambda。 这个 lambda 链接在刚刚复制参数时运行良好,但是当我想修改它们时,完美转发不起作用:#include <boost/hana.hpp> ...
我使用boost::hana to_map function 从boost::hana类型的元组中删除重复项。 在编译器资源管理器中查看。 该代码运行良好,但编译时间很长(约 10 秒)。 我想知道是否存在与boost::hana元组兼容的更快的解决方案。#include <boost/han ...
我的目标是在将字符串“hello”作为常规字符串编写时具有类似以下内容。 我可以让 function 制作这种类型的字段 但我的目标不是拥有element类型的 object 。 取而代之的是它的子类。 我需要类似下面的东西,我可以包装在一个宏中。然后我将使用类型hello作为模板参数。 以上不会 ...
这主要是一个好奇的问题。 我看到这样的代码(我对它的作用不感兴趣) constexpr auto xxx = boost::hana::overload( [](SomeType& x){ /* x is used and something is returned */ }, ...
Boost Hana 是否提供了一种将谓词与逻辑运算符结合起来的方法? 我指的是大致这样的东西constexpr auto both = [](auto&& f, auto&& g){ return [&f,&g](auto&& ...