2
//more code omitted that is not relevant, the IF template is not completely shown here
template <bool condition, typename ThenType, typename ElseType>
struct IF {
typedef typename ChooseSelector<condition>::RETURN Selector;
};
template <bool condition>
struct ChooseSelector {
typedef SelectThen RETURN;
};
template <>
struct ChooseSelector<false> {
typedef SelectElse RETURN;
};
//SelectElse and SelectThen omitted
我得到Expected nested-name-specifier before ‘ChooseSelector’
。根據經常聯繫C++ typename description,如果我得到它正確的,這裏需要typename
。如果我從IF模板中刪除typename,我仍然得到相同的錯誤,所以我有點困惑實際上導致錯誤的原因。我讀了很多答案,表明刪除typename可以解決問題,但在這種情況下情況並非如此。我錯過了什麼?與typename混淆,因此錯誤
錯誤來自Linux上的g ++,VS10也會拋出錯誤。
把你的IF模板放在ChooseSelector模板後 – Erik 2011-03-27 10:47:55
嗯,工作。不是那樣想的。如果你把它作爲答案發布,我會承認它。你能告訴我爲什麼這是相關的嗎? – DrColossos 2011-03-27 10:51:41