给定constexpr type_info,我可以恢复原始类型吗?

时间:2017-11-17 01:46:58

标签: c++ c++11 template-meta-programming constexpr

给定constexpr std::type_info&,我可以在编译时以某种方式恢复type_info引用的原始类型吗?

理想情况下,我喜欢这样的事情:

template <std::type_info& const TYPE_INFO>
using original_type_t = /* implementation here */

struct dummy_testing {};
static_assert(std::is_same<dummy_testing,
              original_type_t<typeid(dummy_testing)>::value);

我不希望任何当前发货的编译器实际上可以实现这一点,但很高兴被证明是错误的。

现在有一些背景知识:

我正在研究一些部分专用的可变参数模板类,其中每个参数本身都是另一个可变参数模板的实例。完整类型最终有N个参数,每个参数都有大约M个参数。不用说,这个类的一行编译错误会占用几个屏幕。

大多数情况下,我不需要所有参数或所有嵌套类型。我只需要我的部分特化对于顶级模板的特定实例化是唯一的。我想确保

typename outer<inner<a, b, c>, inner<d, e, f>>::nested;

对于确切的参数序列是唯一的,即使nested不依赖于这些参数。这也有助于inner<x, y, z>的整个序列没有为每个错误打印。我可以通过编译时跟踪gcc给我的堆栈跟踪找到它。

欢迎提出其他想法和建议。另外,如果这是一种语言功能(假设它已经不存在),你会用它做什么有趣的疯狂事情?

0 个答案:

没有答案