CRTP를 쓰는 이유가 virtual table의 overhead 줄이려고 쓰는거잖슴. 그런데 CRTP를 사용하는 클래스를 컨테이너에 담으려고 추상클래스를 CRTP base 클래스에 상속받는 코드를 봤음. 이럴거면 CRTP 왜 쓰는거임?
왜 저런 코드를 짜나 생각해봤는데 도무지 모르겠음. 컨테이너같은데 담으려고 abstract class를 상속받으면 abstract class의 포인터로 들고있을거고, 인터페이스 맴버 함수 또한 virtual이라서 virtual table 참조하게 되는건 runtime polymorphism이랑 똑같을텐데... 혹시 다른 이유가 있음?
https://m.dcinside.com/board/github/76791
답변해줬다
dynamic cast 대신 쓰는 용도로 쓰는건봄
코드를 보여줘야 답변하지 않을까? 질문만 봐서는 그나마 최적화 가능한 부분을 CRTP를 사용해서 가상함수테이블이 비대해지는 오버헤드를 줄이고 싶었다 라고 밖에 말못하겠는데
crtp는 런타임 다형성때매 있는게 아닐걸?
이건 코드 보여줘야 알겠는데