首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >促进Hana概念的实现

促进Hana概念的实现
EN

Stack Overflow用户
提问于 2017-09-02 09:10:33
回答 1查看 324关注 0票数 1

Boost Hana似乎没有记录库的这个方面,所以我想知道我所做的至少是合法的。

我已经开始在我的代码中添加一些概念,我不得不使用一些hana概念。有一个例子:

代码语言:javascript
复制
#include <boost/hana.hpp>

namespace hana = boost::hana;

template < typename T >
concept bool C_Type = requires(T object) {
    typename decltype(object)::type;
};

template < typename T >
concept bool C_Functor = hana::Functor<T>::value;

constexpr decltype(auto)  applySignatureOn(auto storageSig,
                                           C_Functor innerTypes) {
    return hana::transform(
          innerTypes,
          [=] (C_Type type)
          { return hana::make_pair(
              hana::make_tuple(type),
              storageSig(type));
          });
  }

这样就可以为Boost Hana函子概念做一个“别名”了吗?还是随时都有可能改变?

顺便说一句,这个错误并不是很精确。可能是因为Hana使用的是C++14,不能使用概念。但是有没有计划有一天升级到C++20呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 16:40:28

Boost Hana似乎没有记录库的这个方面,所以我想知道我所做的至少是合法的。

Hana记录了它对概念这里的模拟。

这样就可以为Boost Hana函子概念做一个“别名”了吗?

是的,没关系。文档定义了在Hana中它的意思是一个概念,然后它说Functor是一个概念。您所使用的东西都是文档化的,因此它是安全的,在Hana做了彻底的更改之前,它不会损坏。

可能是因为Hana使用的是C++14,不能使用概念。但是有没有计划有一天升级到C++20呢?

正如您所说的,Hana没有使用"C++概念“,因为它是一个C++14库,我们喜欢称之为"C++概念”的东西还没有包含在任何已发布的语言规范中。我们会看到,当语言发布时,Hana可能会开始使用C++20概念。但是,它必须带来显著的改进,因为这是对用户的编译器需求的一个重大变化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46012252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档