我已經使用以下所示方法來強制編譯器在我叫喊的變量類型:是否有可能通過強制編譯器錯誤來擴展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