(<) 연산자가 정의되지 않은 유형이 'myclass'로 전달되면 예외를 throw하려고합니다. 내가하고 싶은 것을 설명하기 위해 몇 가지 샘플 코드를 추가했습니다.특정 연산자가 C++의 템플릿에 정의되어 있는지 어떻게 확인합니까?
template<typename T>
class CLASS {
public:
CLASS()
{
//if('T' does not have '<' operator defined)
//{
// throw exception;
//}
}
private:
T mProperty;
};
class PlainClass {
public:
PlainClass() {}
private:
int num = 0;
};
int main()
{
CLASS<int> ok; //ok
CLASS<PlainClass> error; //throws exception
return 0;
}
향후 시청자를위한 참고 사항 : Nacl의 질문에 대한 대답으로 문제가 해결되고 Columbo는보다 세련된 솔루션을 제공합니다.
왜 예외를 사용하려면
? 템플릿은 컴파일 타임에 컴파일러 오류가 없을까요? – Suma
나는 그것이 가능하지 않다고 생각한다. 유효한 연산자가 없으면 컴파일러는 컴파일을 허용하지 않습니다. – BWG
과제에 여분의 점수를 받기를 원한다면 예외를 던질 필요가 있다고 들었습니다 ... 그래서 여기에있을 것이라고 추측했지만 잘못되었습니다. 귀하의 의견을 보내 주셔서 감사합니다. –