我已经使用以下所示方法来强制编译器在我叫喊的变量类型:是否有可能通过强制编译器错误来扩展typedef?
template <class T>
struct show_type;
与所需的变量使用它,以便编译器错误不完整的结构类型:
typedef int32_t s32;
s32 a;
show_type<decltype(a)>();
所以GCC 5.3 0.0产生错误:
invalid use of incomplete type '
struct show_type<int>
'
而且MSVC 2015:
'
show_type<s32>
': no appropriate default constructor available
现在,我不知道是否有办法迫使错误显示的typedef
S(即,s32 -> int32_t -> int
)完整的层次,或者至少最新typedef
和第一原始类型?我不介意肮脏或邪恶的伎俩。
'typedefs'是简单的别名,而不是它们自己的类型。你可能会阻止错误的树。请提供一个[MCVE]。 –
@πάνταῥεῖ后阶段4编译逻辑是这样,但在阶段4没有语法检查,所以它可能有,这不是不可能或什么?真的不知道,这就是我问的原因。 – xinaiz
* * typedef的全部层次结构?在什么情况下?第一个原始类型* what *?我不清楚你实际要求什么。 – Barry