내가 기본 형식 매개 변수와 템플릿 구조체로, C++ 코드의 최소한의 인위적인 예를 :이 C++ 템플릿에서 형식을 지정해야하는 이유는 무엇입니까?
#include <iostream>
using namespace std;
template <class T=int>
struct AddsFourtyTwo {
template <class U>
static U do_it(U u) {
return u + static_cast<T>(42);
}
};
int main() {
double d = 1.24;
std::cout << AddsFourtyTwo::do_it(d) << std::endl;
}
이 코드를 컴파일 할 때, 나는 g ++ 4.9.1 다음과 같은 오류가 발생합니다 :
int에 T를 지정하면 컴파일되어 예상 출력 (43.24)을 생성합니다. 내 질문은, 왜 이것이 필요한가? 형식을 지정해야하는 경우 AddsFourtyTwo의 정의에서 기본 형식 매개 변수는 무엇을합니까?
클래스는 여전히 템플릿이므로 빈 대괄호 쌍을 제공해야합니다. – 0x499602D2
유형을 지정할 필요는 없지만 꺾쇠 괄호가 필요합니다. 'AddsFourtyTwo <> '는 정상입니다. –