我試圖做一個通用的代碼,會導致編譯錯誤,如果B不是D的祖先我想出什麼樣的主意:模板參數不取代
template<typename B, typename D>
struct assert_base_of {
enum {value = sizeof(B::D)};
}
它不起作用。當我稱之爲'像這樣:
assert_base_of<A2,A1>::value;
我得到以下錯誤(G ++ 4.8.2):
main.cpp:16:22: error: ‘D’ is not a member of ‘A2’
它看起來像模板參數d沒有得到取代A1。任何人都可以解釋並提出解決方案嗎?
什麼'static_assert錯誤(std :: is_base_of :: value,「B必須是D的基數」)? –
我不允許使用std :: is_base_of,即使可以,我仍然想知道爲什麼D不會被替換:) – pyx
「允許」由誰?如果有人對你可能的解決方案集進行了任意限制,你應該在問題中說明它們,以避免浪費我們的時間。 –