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); 같은게 가능해짐
실제로 이러한 검증 레이어가 있고 없고가 굉장히 큰데 이 차이를 자꾸 무시하노
무브 시맨틱스가 언제 생겼는지 챙겨봐라
그냥 뭐 냅둘라고 했는데 지가 저격해서 싸워놓고 또 지랄염병이네
신라의 밤이여
저 반고닉 친구가 밑에 예외랑 rall 어쩌고 하던데 무슨 말임? 이해가 안가노
아무 얘기도 안해주면 또 나중에 털었다느니 하겠지 싶어서 말하는데 RAII를 얘기하는데 스마트포인터와 무브시멘틱 얘기하는게 문해력이 이상한거 아니냐 ㅋ 그리고 C++은 예외처리 구문자체가 finally가 따로 없고 RAII로 쓰게 되어 있는데 무슨 자꾸 언어차원이 어쩌고 저쩌고
에휴, RAII의 구체적 표현이 스마트 포인터와 무브 시맨틱스야 CPP에서 구현체가 그건데 뭔 딴소리여
스마트포인터-CPP의 RAII의 표준 구현체
무브 시맨틱스- RAII 소유권 이동을 가능케하는 CPP 표준 매커니즘
애초에 CPP finally를 안 한 이유는 소멸자 호출이 강력해서 이 소멸자 호출의 자동화가 스마트 포인터임. 에휴
RAII 일일이 하기 귀찮으면 스마트포인터로 해라 하고 "추가해서" 만들어준거를 기존에 불안정했다느니 어쩌고 저쩌고
그리고 임마 표준라이브러리 std::string같은건 스마트포인터 없어도 RAII 다 구현되어 있었다고
@ㅇㅇ 그게 불안했다는건 이펙티브 씨플플에도 나온 내용인데 임마는 진짜 문해력 심각하노
@ㅇㅇ 11부터 무브 시맨틱스가 추가되면서 std::string s=std::move(other); 같은게 가능해짐 -- 이게 본문 내용이라니까 에휴
네가 멍청한 소리 자꾸 하는 이유를 추정해봤는데 ㅋ RAII로 안전하게 처리 하고 있는데 그 구현이 copy거든 근데 이걸 move로 바꾸면 속도가 존내 빨리질거 같은데 그럼 안전에 문제가 생긴단 말이지 그럴때 이거 예외 절대 안생긴다고 컴파일러에게 알려주면 move 쓸 수 있다는 소리다 noexcept말이다 바보같이 안전과 최적화를 동일시 하고 있었던거임? ㅋ
@ㅇㅇ 하, 진짜 병신같은 소리를 계속하노.
@ㅇㅇ 야이 병신새끼야 니가 어머니한테 낳음당했지. 니가 어머니를 낳았냐? 이거랑 동일한거야 병신아..
@ㅇㅇ 1.Copy 방식에서 noexcept 라고 말하면 다된다고하는데, 이게 설계에서 이상이 없기때문에 noexcept 선언할 수 있는거지. 그 반대가 선언된다하노. 98에서 데이터 구조 일관성 보장이 안되서 개지랄 염병난건데 뭔 딴소리를 하노
@ㅇㅇ 너 이펙티브 CPP 읽어는 봤냐?
@ㅇㅇ 지금 내가 한말을 그책에서 복사에서 댓글로 달아줬었잖니 ㅋ
@ㅇㅇ 니가 한거 문맥 전혀 반대인걸 가져온거잖아 등신아..
@ㅇㅇ 내가 그 전체 문장 가져와서 말해준거고
@ㅇㅇ
https://gall.dcinside.com/board/view/?id=programming&no=2896918&page=1