给定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给我的堆栈跟踪找到它。
欢迎提出其他想法和建议。另外,如果这是一种语言功能(假设它已经不存在),你会用它做什么有趣的疯狂事情?