알고있는 한, memcpy
을 초기화되지 않은 저장소에 넣고 cannot 안전하게 소스 개체의 복사본을 만드는 데 사용하십시오.새로운 표준의 memcpy 평생 초기화 규칙에 대한 변경 사항은 무엇입니까?
그러나, 오픈 표준의 WG21 "UB"목록에 작년 this thread에서, 참가자가 참조하는 새로운 방어 적이기 수명-개시 규칙 :
이 상승하지 않는 것 버그 리포트의 레벨이지만, 은 새로운 memcpy lifetime-initiation 규칙과 관련 될 수 있습니다. 그들은 일부 정적 유형을 원본 및 대상 바이트로 간주합니까?
질문 입력 소거 예제 코드 소량의 컨텍스트에 기초하여,이를 통해 memcpy
aligned_storage
새로운 객체를 생성과 관련 될 수 있다는 것을 보인다.
검색 할 때마다 새 규칙에 대한 참조를 찾을 수 없습니다. 특히 이미 생성 된 객체의 내용을 대체하는 데만 적용되는지 또는 초기화되지 않은 메모리에서 객체의 잠재적 생성을 둘러싼 상황을 변경하는 경우에 특히 흥미 롭습니다.
"알고있는 한, 초기화되지 않은 저장소에 memcpy를 사용하면 원본 개체의 복사본을 안전하게 만들 수는 없습니다."예,하지만 심각하게 std를 복용하는 뻐꾸기 땅에서만 가능합니다. 위원회의 대부분의 사람들이 그들이 무엇을하는지 거의 알지 못한다는 것을 알고 있다면 ... – curiousguy