为什么boost :: hana :: experimental :: types是一个实验性功能?关于类型列表有什么棘手的问题?

时间:2017-06-05 11:39:57

标签: c++ boost boost-hana

我正在调查Hana,我惊讶地发现它有一个type的概念(一个"类型的容器"排序,类似于一个 - 元素元组没有实际值),但typestype的序列)是一个实验性特征。

有谁知道为什么?关于类型列表而不是单个类型的容器有什么问题?

1 个答案:

答案 0 :(得分:3)

答案基本上就是杰森所说的:

  

我希望将类型视为hana::Sequence,但它不会通过法律,因为它不会保留任何类型的值(如运行时状态的值)

&#34;问题&#34;是hana::types无法成为hana::Sequence,因为hana::Sequence应该能够保存任意内容,而不仅仅是类型。虽然这看起来似乎没什么大不了的,但事实上确实如此。例如,我们也无法满足hana::Monad,因为这需要hana::flatten,其签名为M<M<T>> -> M<T>,适用于任意hana::Monad M。由于hana::types只能包含类型,因此您不能拥有hana::types<hana::types<int, char>, hana::types<float, long>>没有特殊的整体内容。

无论解决方案是什么,我都希望找到一种不会破坏Hana概念完整性的解决方案,同时仍然允许更多编译时效率类型列表。