integral_constant라는 Helper 클래스에 대해 궁금합니다.
글쓴이: dltkddyd / 작성시간: 화, 2013/11/26 - 5:17오후
integral_constant라는 클래스안에 타입인수로 비타입인수를 캐스팅하는 연산자가 정의돼 있습니다. 이것이 뭘 하는 것인가 궁금해서 Trial이라는 클래스로 동일한 연산자를 정의하였더니, 내부의 값을 캐스팅해서 적절하게 불러오기 위한 기능을 하는 것이던데요. 그런데 이와는 다르게, integral_constant 클래스에서의 타입캐스팅은 내부의 값을 적절하게 불러오지 못합니다. 아래 예시 코드가 있습니다.
template class Trial { public: static const int value=v; operator int() const { return v; } };
int main() {
Trial ttmp;
cout<<"ttmp.value is "<<(int)ttmp<
integral_constant obj3;
cout<
cout<<(int)obj3<
return 0;
}
Forums:
글이 잘려서 다시 올립니다.
integral_constant라는 클래스안에 타입인수로 비타입인수를 캐스팅하는 연산자가 정의돼 있습니다. 이것이 뭘 하는 것인가 궁금해서 Trial이라는 클래스로 동일한 연산자를 정의하였더니, 내부의 값을 캐스팅해서 적절하게 불러오기 위한 기능을 하는 것이던데요. 그런데 이와는 다르게, integral_constant 클래스에서의 타입캐스팅은 내부의 값을 적절하게 불러오지 못합니다. 아래 예시 코드가 있습니다.
integral_constant의 내부 정의는 다음과 같던데요.
여기서
constexpr operator T(){return v;}
가 캐스팅을 제대로 하지 못하는 이유는 뭔가요? 그런데 <를 계속 <, >를 >로 출력하네요. <code>~</code>로 감쌌는데도요.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기