【发布时间】:2016-08-30 17:28:01
【问题描述】:
我一直在使用下面显示的方法来强制编译器对我大喊变量类型:
template <class T>
struct show_type;
将它与所需的变量一起使用,因此编译器会出错一个不完整的结构类型:
typedef int32_t s32;
s32 a;
show_type<decltype(a)>();
所以 GCC 5.3.0 产生错误:
不完整类型'
struct show_type<int>'的使用无效
和 MSVC 2015:
'
show_type<s32>': 没有合适的默认构造函数可用
现在我想知道是否有办法强制错误显示typedefs(即s32 -> int32_t -> int)的完整层次结构,或者至少是最新的typedef 和第一个原始类型?我不介意肮脏或邪恶的把戏。
【问题讨论】:
-
typedefs是简单的别名,而不是单独的类型。你可能是在暴露错误的树。请提供带有上下文的minimal reproducible example。 -
@πάνταῥεῖ 对于第 4 阶段后的编译逻辑来说确实如此,但是在第 4 阶段中没有语法检查,所以也许,有机会,这不是不可能的吗?真的不知道,这就是我问的原因。
-
what
typedefs 的完整层次结构?在什么情况下? what 的第一个原始类型?我不清楚您实际要求的是什么。 -
标签: c++ typedef incomplete-type