C++의 클래스 템플릿에서 예외 처리 구문 사용 질문입니다.

C++를 soen.kr에서 공부하고 있는데요.
클래스 템플릿에서 예외 처리를 하지 못한다는 부분이 있어서, 구체적으로 이게 어떤 상황을 말하는 것인지 잘 모르겠어서 질문드립니다.


출처는 http://soen.kr/lecture/ccpp/cpp3/32-3-3.htm 이곳입니다.

저 문서 자체가 워낙 오래된 것라서 C++03 표준으로 컴파일해봤는데, C++ 클래스 템플릿에서 예외 처리 구문(try, catch, throw)들이 사용이 가능했는데요. 저 문서에서 말하는 상황이 어떤 것인지 잘 이해가 안됩니다 ㅠ

저도 정확히 무슨뜻인지는 잘 모르겠네요.

대충 뉘앙스를 추측해보면, 템플릿 인자로 넘길 타입이 여러가지가 가능하잖아요.
빌트인 타입들일 수도 있고, 제가 만든 클래스일수도있고, 그래서 그 타입에 의존적인 예외가 발생할 수 있잖아요. 그런거까지 예측해서 템플릿을 설계하는게 쉽지않다는거 같아요.

멀티스레드는 아마 mutex객체를 다루는데 불편해서 그런걸까요?
이 부분도 정확히 모르겠네요…

1 Like

soen.kr 같은곳 보지 마세요… std::auto_ptr 쓰라고 하는곳…

  1. C++의 템플릿 클래스는 아예 예외를 던질 수 없다?
  • 사실이 아닙니다. std::string.at()가 반례
  1. C++의 템플릿 클래스에서는 예외를 던지기에 부적합하다?
  • 사실이 아닙니다. 템플릿 인자 타입에 상관없는 클래스 사후조건 체크에 대해서는 예외보다 더 나은 방법은 없습니다.
3 Likes

저도 그 사이트 들어가보니까
좀 옛날에 쓰여진 거 같더라구용.