자기가 링크한 게시에 cpp 레퍼런스같은 공신력있는곳에서도 엄연히 있는데
RAII 자체는 C++ 탄생 부터 함께했음
Fire and Forgot 같은거 '패턴'으로 쓰였음
근데 패턴은 언어적 차원의 지원이 아님
따라서 이때문에 C++ 98에서 Auto_ptr이 나왔지만 검증 레이어인 이동시맨틱이 부재로 인해서 실제로 Auto_ptr은 쓰이지 않았고, 실제로 유저가 구현해서 써야했음
그 마저도 절대다수는 RAII 조차 시도도 안한 사실이고( 23년도 기준 약 90%의 C++ 프로젝트가 RAII를 지키지 않는다는게 통계였음)
결국 언어적 차원에서 RAII를 직접 지원하기위해서 시도된게 모던 C++이고, 여기서 도입된 래퍼들이 C++11이고 이걸 일반적으로 모던 문법이라고 하는거고
그걸 지키지 않으면 '레거시'라고 코어 가이드라인에서 말하는거
자꾸
'RAII는 이전부터 있었는데 뭔 소리야'
이러는데
'RAII는 초창기부터 존재했지만, 대부분 안 지켜서 지키라고 C++11부터 포인터 래퍼해서 만들어줬고, 그게 모던 문법이라고 한다'
라는거임
자꾸 '패턴' 과 '언어적 지원' 이 2개를 혼동하는거 같은데
언어적 규약과 프로그래머가 쨔아할 베스트 프렉티스 사이에의 간극을 이해 못하는듯
std::string 같은거 가져와서 이건 뭔데?
이러는데
std::string도 표준화 이전 SGI STL에도 존재했지만,
11부터 무브 시맨틱스가 추가되면서 std::string s=std::move(other); 같은게 가능해짐
실제로 이러한 검증 레이어가 있고 없고가 굉장히 큰데 이 차이를 자꾸 무시하노
맞지 패턴은 언어적 지원이 아님
맞음
메가여치 아조씨는 그건 프로그래머 잘못이라고 하는