4
멤버 함수의 반환 형식에 decltype을 사용하고 있지만 정의와 선언이 일치하지 않습니다. 여기에 몇 가지 코드는 다음과 같습니다선언 다음에 멤버 함수 정의와 함께 decltype 사용
는template<typename T>
struct A {
T x;
auto f() -> decltype(x);
};
template<typename T>
auto A<T>::f() -> decltype(x) {
return this->x;
}
int main() {}
이 선언이 (A<T>*)this
을 가지고 어디에 정의가 (A<T>*)0
을 가지고있는
test.cc:10:6: error: prototype for 'decltype (((A<T>*)0)->A<T>::x) A<T>::f()' does not match any in class 'A<T>'
test.cc:6:7: error: candidate is: decltype (((A<T>*)this)->A<T>::x) A<T>::f()
의 차이를 생산하고 있습니다. 뭐라 구요?
어떤 컴파일러를 사용하고 있습니까? –
단지'x' 대신'A :: x'가 무엇을 말하는가? 나는 그것이 작동하는지 또는 그것이 그렇게되어야 하는지를 모른다. –
@ChristianRau 그게 실제로 작동하고, 지금 gcc가 수정하기 전까지 구현 한 솔루션입니다. – Bakkot