이 프로그램은 원하지 않는 파싱 탐욕 막 다른 골목을 초래합니다 :
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8 : 1 : 오류 : 'float4x4'에 'C'라는 멤버가 없습니다. 단순히 'C'를 의미 했습니까?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
후행 반환 유형을 사용하여 '고정'할 수 있습니다.
auto ::C::M() -> float4x4
{}
이제 모두 좋아.
heading-return-type 선언자 구문을 사용할 때 클래스 이름을 완전히 규정 할 수 없다고 생각합니까?
@Someprogrammerdude yep, 이것을 확인하십시오 godbolt.org/z/mt6GHD
—
v.oddou
이
—
rustyx
::C
부분은 다른 문제에 대한 해결 방법처럼 보입니다. 그렇지 않으면 그것은 단순히 C
컴파일러가 제안한 것처럼 간단했을 수 있습니다 .
@rustyx이 위치에서 매우 복잡한 "최소화 된 인증 된 이름"을 실행하고 싶지 않은 트랜스 파일러에 의한 코드의 기계적 재전송입니다. FQ 이름을 방출하면 조회를 완전히 우회하고 이러한 도구에 편리합니다.
—
v.oddou
::
다른 방법이 없다고 가정합니다.