2014-09-13 1 views
0

특수 멤버 함수는 "컴파일러가 자동으로 생성하지만 프로그래머가 명시 적으로 선언하지 않는 함수"입니다.자동 생성 멤버 함수 식별

http://en.wikipedia.org/wiki/Special_member_functions

세부 사항은 C++ 11 표준의 §12에 있습니다

는 기본 생성자 (12.1), 생성자를 복사 할당 연산자 (12.8)를 복사 생성자를 이동하고 할당을 이동 연산자 (12.8) 및 소멸자 (12.4)는 특수 멤버 함수입니다. [참고 : 프로그램에서 명시 적으로 선언하지 않으면 구현시 암시 적으로 일부 클래스 유형에 대해 이러한 멤버 함수가 선언됩니다. 구현은 odr-used (3.2) 인 경우 암시 적으로 정의합니다. 12.1, 12.4 및 12.8을 참조하십시오. - 마지막주의]

컴파일시 생성 된 모든 특수 멤버 함수를 식별 할 수있는 알려진 메소드는 무엇입니까?

선호하는 컴파일러는 gcc와 clang입니다. C에서

+0

왜이 기능이 필요합니까? –

+0

나는이 기본값, 특히 기본 복사 생성자의 사용을 체계적으로 보여주고 싶습니다. – Praxeolitic

답변

1

는 ++ (11), 헤더 <type_traits>는 다음과 같은 기능 세트를 정의 :

is_constructible 
is_default_contructible 
is_copy_contructible 
is_move_contructible 
is_assignable 
is_copy_assignable 
is_move_assignable 
is_destructible 

당신은 컴파일 타임에 암시 적으로 생성 방법의 존재 여부를 테스트하는 데 사용할 수 있습니다, 예 :

std::is_constructible<ClassName>::value