- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 boost::hana 生成一个使用模板中的模板的类型,但遇到了麻烦。
我有以下类(class)
template<template<typename> typename BarModel>
struct Foo {
BarModel<double> bar;
}
template<typename T>
struct BarOne {
T x;
}
template<typename T>
struct BarTwo {
T y;
}
我现在想创建一个 Foo<BarImpl>
对于每个 BarX<T>
类:
auto bar_types = hana::tuple_t<hana::template_t<BarOne>, hana::template_t<BarTwo>>;
hana::for_each(bar_types, [](auto t) {
auto footype = SOMETHING(t);
});
问题是我不确定应该如何完成。我的第一次尝试是做
using BarT = typename decltype(t)::type;
auto bar_t = BarT(); // template_t, can create BarX<T> classes
auto foo_t = hana::template_<Foo>; // <-- FAIL
auto foo_bar_t = foo_t(bar_t);
但这失败了
error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class ...> class F> constexpr const boost::hana::template_t<F> boost::hana::template_<F>’
note: expected a template of type ‘template<class ...> class F’, got ‘template<template<class> class BarModel> class Foo’
注释表明 hana::template_
不适用于模板模板。是这样吗?如果是这样,是否有替代解决方案?
最佳答案
Boost.Hana 不直接支持这一点,但在这种情况下实现它只是几行代码。
检查一下:
#include <boost/hana.hpp>
namespace hana = boost::hana;
template <template <template <typename...> class> class F>
struct template_template_t
{
template <template <typename...> class G>
constexpr auto operator()(hana::basic_type<hana::template_t<G>>) const
-> hana::type<F<G>>
{ return {}; }
};
template <template <template <typename...> class> class F>
constexpr auto template_template = template_template_t<F>{};
/*****/
template <template <typename...> class BarModel>
struct Foo {
BarModel<double> bar;
};
template <typename T>
struct BarOne {
T x;
};
template <typename T>
struct BarTwo {
T y;
};
int main() {
constexpr auto bar_types = hana::tuple_t<hana::template_t<BarOne>, hana::template_t<BarTwo>>;
BOOST_HANA_CONSTANT_ASSERT(hana::equal(
hana::transform(bar_types, template_template<Foo>)
, hana::tuple_t<Foo<BarOne>, Foo<BarTwo>>
));
}
关于c++ - 模板模板的 hana 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47694300/
unix 时间戳值通过 MySQL DB 的数据服务传入 HANA。 但是,我可以使用以下语句找到日期,但想知道 SAP HANA 或数据服务设计器中是否有任何内置函数可以完成这项工作?还有什么方法可
unix 时间戳值通过 MySQL DB 的数据服务传入 HANA。 但是,我可以使用以下语句找到日期,但想知道 SAP HANA 或数据服务设计器中是否有任何内置函数可以完成这项工作?还有什么方法可
这是我的存储过程,我试图获取最后插入的 DepartmentId。不寻找没有 MAX(DepartmentId) 的触发器和任何解决方案。 CREATE PROCEDURE "BPPRA_CUSTOM
我目前正在通过 ABAP 对象为 HANA 编写数据库过程。我想返回一个标量值,它是根据选择而不是其他开发人员必须从表中读取的表计算得出的。我宁愿不通过导入/导出参数声明要在存储过程中使用的变量。 m
我有一个查询将当前年份作为占位符参数传递,该参数现在是硬编码的。我怎样才能让这个刚刚过去一年?我见过一些不同的潜在解决方案,但其中大部分都在 HANA Studio 中或涉及动态 SQL 生成。 我正
我正在尝试使用 HANA XS Javascript 实现简单的产品目录。目录的页面应该在服务器端呈现。 如何根据从 HANA 数据库读取的数据处理“动态”URL?例如,http:///myapp/s
我有一个 hana::tuple_t ,我想用它来创建一个 hana::tuple . 我认为使用 hana::to将转换 hana::tuple_t进入hana::tuple ;但事实并非如此,因为
我在调用 HANA 存储过程时遇到语法错误。在 Hana Studio 的 SQL 编辑器中它可以工作,但 Java 中的prepareCall 的语法必须不同。我认为这是包名称后面的正斜杠,但不知道
谁能解释一下 SAP HANA 和 SAP HANA Vora 的智能数据访问 之间的区别? 据我了解,SDA 只是创建了一些虚拟表,可以像这样访问外部系统(如 Hadoop 和许多其他 ODBC 数
是否存在编译时将 Struct 概念的成员类型转换为类型名称的 std::string 的 STL 容器的 Boost Hana 方法? 例如, MyType t(); std::array ls =
我有一个带有单个 varchar 字段的 SAP HANA Vora 虚拟表。我尝试从 SAP HANA Studio 对此 Vora 虚拟表执行以下查询: INSERT INTO "BPINST".
我一直在使用我自己编写的精简版 mpl,但我需要它更健壮。目前,我正在考虑使用 boost::hana,它似乎拥有我需要的一切,但有一个异常(exception):我看不出有任何方法可以将 hana:
我正在安装 HANA Studio,并且已下载 JDK 1.8 和 JDK 1.7。我将 JDK 1.8 用于 Eclipse 和我正在处理的其他一些事情,但是当我尝试通过 SAP HANA 生命周期
您好,我正在尝试编写一个查询来使用中间输出。 我有一个以 PROD_DATE、PRICE 作为列的表,当我在 HANA 中给出以下查询时,查询将按预期执行。 select round(days_bet
由于 SQL 知识有限,我在 HANA 数据库上编写了一个过程,这里是我的代码的一小部分。 CREATE PROCEDURE _SYS_BIC.claims(OUT percent_value dis
我想查询 sap-hana 数据库中的系统表以提取有关外键的信息。有“索引”和“索引列”系统表,但我只看到“约束”列包含“主键”和“?”值,但不是外键值。对此高度赞赏的任何帮助。 最佳答案 检查系统表
有没有办法在 HANA 中拆分字符串? 类似于 SQL Server 中的等效项:SELECT * FROM dbo.fnSplitString('valueA,valueB', ',') 最佳答案
所以我有一个基表 - TRAINING,它有 100 列。有些列将完全为 NULL,有些列将包含值。因此,假设 COLUMN 1-20 为空,COLUMN 21-100 不为 NULL。 我有另一个名
是否有一种简洁的方法来获取满足Hana中的谓词的元组元素的索引序列? ? 这是我只使用标准库为此编写的代码: template typename Pred, typename Tuple> clas
所以,我了解如何在 HANA 中创建触发器,但是 HANA reference material 中的示例不要提及表 A 上的触发器如何更新表 A;相反, Material 总是在 A 更新 B 时触
我是一名优秀的程序员,十分优秀!