C++에서 using
별칭을 여러 번 선언하는 것이 합법적입니까? 하나의 헤더 파일이 'public'으로 사용되는 템플릿 라이브러리가 있습니다.이 라이브러리에는 모든 템플릿 클래스 선언과 별칭, 그리고 '구현'파일이 포함되어 있습니다 (문자 적 의미가 아니라 템플릿 클래스의 정의가 들어 있습니다). 공개 헤더 파일에는 모든 구현 헤더가 포함됩니다.C++에서 'using'별칭의 여러 정의
구현 파일에서 공용 헤더를 포함 할 수 없습니다. 이는 순환 종속성을 유발할 수 있기 때문입니다. 그러나 구현 파일 내부에 헤더 파일에 선언 된 템플릿 별칭을 사용하고 싶습니다.
예 :
'공공'헤더 :
using true_type = logical_constant<true>;
using false_type = logical_constant<false>;
'개인'구현 파일 :
사용하여 별칭 별칭 둘만큼using true_type = logical_constant<true>;
using false_type = logical_constant<false>;
같은 일이 합법적인가? 이 간단한 예제는 MSVC 14에서 작동했지만 비슷한 방식으로 더 복잡한 별칭을 사용하려고 시도했을 때 컴파일러는 불평했습니다.
컴파일러에서 제공하는 "더 복잡한 별칭"과 정확한 불만의 예를 제공 할 수 있습니까? – kdelaney
실제 문제 코드 [mcve]를 입력하십시오. – Barry