Programing

정적 멤버 함수의`this` 유형?

lottogame 2020. 10. 25. 11:31
반응형

정적 멤버 함수의`this` 유형?


C ++ 5.1.1 / 3 [expr.prim.general]에서는 다음과 같이 말합니다.

유형 및 값 범주 [of this]는 정적 멤버 함수 내에서 정의됩니다.

이것은 무엇을 의미 하는가? 어떤 관련이 있습니까?

참고 :

this 정적 멤버 함수의 선언에 나타나지 않아야합니다.


표준의 언어는 결함 12071017에 대한 해결책 인 n3282 로 추적 될 수 있습니다 . 특히,이 언어는 결함 1207에 대해 제안 된 결의안에 나타나므로 결함이 해결 된 당시의 표준 맥락에서 고려되어야합니다. 그 당시에는 (9.3.1p3)을 사용하여 id-expression을 멤버 액세스 식으로 다시 작성하는 것에 대해 약간의 우려가있었습니다 . 특히 후행 반환 유형 선언의 맥락에서 (문제 945 참조 ).*this

결함 1207에 대한 제안 된 해결 방법을 n3282의 최종 언어와 이후 표준에서 비교하면 9.3.1p3에 한 가지 중요한 차이가 있습니다.

결함 1207 :

클래스 멤버 액세스 구문 (5.2.5 [expr.ref])의 일부가 아니고 멤버 (5.3.1 [expr.unary)에 대한 포인터를 형성하는 데 사용되지 않는 id-expression (5.1 [expr.prim]) .op])는 이름 조회 (3.4 [basic.lookup])가 이름을 확인하는 경우 class의 멤버 함수 선언에X 사용됩니다 .

n3282 및 C ++ 11 :

클래스 멤버 액세스 구문 (5.2.5 [expr.ref])의 일부가 아니고 멤버 (5.3.1 [expr.unary)에 대한 포인터를 형성하는 데 사용되지 않는 id-expression (5.1 [expr.prim]) .op])에서 사용되는 클래스의 멤버 X여기서 맥락에서 this사용될 수있다 (5.1.1 [expr.prim.general]) , 이름 조회 (3.4 [basic.lookup])가 이름을 확인하는 경우 [...]

결함 1207에 대한 제안 된 해결 방법은 정적 멤버 함수 내의 id-expression (정적 멤버에 대한)이 *this멤버 액세스 식 으로 변환되어야 하므로의 유형 및 값 범주에 대한 액세스가 필요하다는 믿음을 가지고 있음이 분명합니다 this. n3282가 작성되었을 때이 문제는을 필요로하지 않는 정규화 된 ID 변환 (또한 9.3.1p3)을 위해 해결 this되었지만 5.1.1p3의 언어는 흔적으로 남아있었습니다.

C ++ 표준 토론 뉴스 그룹에이 문제를 제기하는 것이 좋습니다. 편집 상으로 흔적이있는 언어를 제거 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/16524897/type-of-this-in-static-member-function

반응형