//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에서 오류가 발생합니다.
ChooseSelector 템플릿 뒤에 IF 템플릿을 넣으십시오. – Erik
흠. 그 생각을하지 않았습니까. 당신이 대답으로 올리면 나는 그것을 받아 들일 것이다. 왜이게 관련이 있는지 말해 줄 수 있어요? – DrColossos