2. three_way_comparable
<compare> 헤더에 정의
three_way_comparable 하다는 아래의 조건을 모두 만족시켜야 한다
(a ⇔ b == 0) == bool(a == b) 가 true
(a ⇔ b != 0) == bool(a != b) 가 true
((a ⇔ b) ⇔ 0) 과 (0 ⇔ (b ⇔ a) 가 상등
(a ⇔ b < 0) == bool(a < b) 가 true
(a ⇔ b > 0) == bool(a > b) 가 true
(a ⇔ b <= 0) == bool(a <= b) 가 true
(a ⇔ b >= 0) == bool(a b) 가 true
4. core language concepts
<concepts>
관계
same_as : 두 형식이 같음
derived_from : 한 형식이 다른 형식의 파생 형식
convertible_to : 한 형식을 다른 형식으로 변환할 수 있음
common_reference_with : 두 형식을 어떤 공통의 참조 형식으로 변환할 수 있음
common_with : 공통형식이 참조형식이 아니어도 되고, common_type_t<T, U> 와
같다
5. core language concepts
assignable_from : 한 형식의 값을 다른 형식으로 배정할 수 있음.
swappable : 두 형식의 값을 교환할 수 있음
산술
integral : 정수 형식
signed_integral : 부호 있는 정수 형식
floating_point : 부동소수점 형식
6. core language concepts
수명
destructible : 파괴 가능
constructible_from : 한 형식으로 다른 형식을 생성할 수 있음
default_initializable : 기본 생성 가능
move_constructible : 이동 생성 가능
copy_constructible : 복사 생성 가능
8. object concepts
movable : 이동 가능
copyable : 복사 가능
semiregular : 준정규 형식(복사가능, 기본생성자 있음)
regular : 정규 형식(복사가능, 기본생성자 있음, 동등비교 가능 ex. int 처럼)
9. callable concepts
invocable : 함수 형태로 호출 가능
regular_invocable : invocable을 충족하고, 같은 입력에 대해 같은 출력을 산출하고,
함수 인수들을 수정하지 않아야 한다
predicate : invocable을 충족하고, bool 로 변환가능한 값을 리턴해야 한다