이동 의미론의 출현과 함께 나는이 특수한 템플릿 기술이 King이 dlib 라이브러리에서 구현했는지를 일시적으로 생성 된 객체가 이동 의미 체계의 도움을 받아 소유권을 넘겨 줄 수 있는지 또는 여기에없는 것을 누락 한 후에도 유용할지 궁금합니다.Dlib에서 사용되는 표현 템플릿 기술은 여전히 C++ 11에서 move semantics가 주어 졌는가?
0
A
답변
0
이 생성자는 클래스 타입 (구조체, 클래스 또는 조합) 제공됩니다에는 사용자 정의 이동 없으며, 다음과 같은 모든 경우에만 컴파일러는 자동으로 기본 이동 생성자를 만듭니다 true :
- 사용자가 선언 한 복사본 생성자가 없습니다.
- 사용자 선언 복사 할당 연산자가 없습니다.
- 사용자가 지정한 이동 지정 연산자가 없습니다.
- 사용자가 선언 한 소멸자가 없습니다.
- 암시 적으로 선언 이동 생성자 인해 다음 섹션에 설명 된 조건에 삭제 된 Dlib는 용기 (array2d에 명시 적으로 정의 된 이동 생성자을 많이 가지고 왜
그게 전부가 정의되지 않은, DNN 모듈 ...)
1
단순한 복사 방지보다 표현 템플릿 기술에 더 많은 것이 있습니다. 예를 들어, 컴파일러는 전체 표현식을보다 효율적인 실행 코드로 변환하기 위해 기호 선형 대수를 수행 할 수 있습니다. 이러한 변환 중 많은 부분이 사본을 피하는 것과 아무런 관련이 없습니다.