Boost Hana似乎没有记录库的这个方面,所以我想知道我所做的至少是合法的。
我已经开始在我的代码中添加一些概念,我不得不使用一些hana概念。有一个例子:
#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呢?
发布于 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概念。但是,它必须带来显著的改进,因为这是对用户的编译器需求的一个重大变化。
https://stackoverflow.com/questions/46012252
复制相似问题