【发布时间】:2012-02-29 18:47:05
【问题描述】:
我正在为用 C 实现的变体类型开发 C++11 包装器。变体类型支持常见的数据类型,如 int、float、string,但也支持 元组。我有表单基本类型的转换器...
template<typename T>
T convert_to(const Variant &var);
...但我正在努力转换为 std::tuple。
底层的 C API 可以通过返回一个变体数组来分解一个元组。它看起来像这样:
int get_tuple(Variant var, Variant **argv, int *argc);
现在我认识到我可以为每种大小的元组手动创建模板,但我正在寻找一种可以处理任何大小的元组的可变参数解决方案。有关如何解决此问题的任何提示?
顺便说一句,我要包装的实际是 Erlang NIF API。
【问题讨论】:
-
元组的这个概念是否容易映射到
std::tuple?似乎它的 arity 在运行时可用,而不是在编译时可用。如果可能的 arities 数量已知且很小,您可以通过类型擦除来摆脱这种情况,但该类型的最终界面不会像std::tuple那样。 -
如果 Variant tuple arity 与 std::tuple arity 不匹配,我打算抛出异常。
标签: c++ templates c++11 tuples variadic