다음 코드에 아무런 오류가없는 이유는 무엇입니까? 정확히 다음 코드 (기호 또는 형식의 별칭)에서 변수의 정의에 사용별칭 형식의 정교한 형식 지정자
using S = struct S;
struct S {};
S s;
int main()
{
}
느릅 나무 이름 : 유형 별칭 및 클래스의 이름은 정확히 같은 (컴파일러 clang
)입니까?
using S = struct S {};
int main()
{
S s;
}
단순히 중복
때문에 C와'형식 정의 구조체 S {} S;' –
'using S = struct S; '는 숨기지 않지만 *'S'는 typedef 이름과 클래스 이름 (두 개의 속성을 가진 단일 이름)으로 재 정의합니다. 사람들은'S = struct S;를 사용하면 두 개의 이름이 나오고 C++은 여러 개의 "기호 공간"을 검색한다고 말하는 사람들이 종종 있습니다.하지만 C++에서는 작동하지 않습니다. 이에 대한 통찰력있는 토론은 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#407에서 확인할 수 있습니다. –