유형 별칭 및 중첩 클래스/범위를 사용하는 경우 이상한 문제가 발생했습니다. GCC와중첩 클래스에서 유형 별칭 사용
template<typename T>
struct container
{
};
struct Outer
{
using type_t = int;
struct Inner
{
using container_t = container<type_t>;
using type_t = Outer::type_t; //error in MinGW
};
};
생성 된 오류 : 다음 코드는 행복하게 nuwen는 MinGW 4.8.1에서 3.3 그 소리에 의해 허용하지만, 거부 http://ideone.com/cba6Fp가 (내 시스템에 오류 일치)
에 오류를 해결하려면 MinGW, 당신은 단순히 container_t
의 정의를 type_t
이후로 옮깁니다. (이것이 의미가 있습니다. 그리고 원래해야만했던 것입니다.) - 그러나 제 질문은 왜 이것이 MinGW가 아닌 clang으로 컴파일합니까? 코드가 유효하거나 유효하지 않습니까?
나는 어떤 위반이 진단을 필요로하지 않는다는 것을 알지 못했습니다. 얼마나 많은 다른 '숨겨진 오류'가 이처럼 있습니까? –
@ LB-- 초안 표준에서 "진단이 필요하지 않습니다"라는 단어가 23 번 나타납니다. – TemplateRex