내 첫 블로그 글이다. 앞으로 자주 쓸 예정이다.(물론 연구가 길어지면 텀이 생길 수도 있음...) 첫 글이라 시작을 이상하게 한 것 같지만, 이제 C++20에 새로 추가된 Concept을 한번 알아보도록 하겠다.
C++20에 모듈이 추가되기 전에는 헤더 파일을 이용하여 재사용 가능한 인터페이스를 제공했다. 하지만 이 헤더 파일에는 몇 가지 문제가 있었다. 헤더 파일을 여러 번 include하지 않게 하거나 include되는 순서를 정확히 지정하기 힘들었다.
Range > ○ 원소에 대해 반복하는 타입 요구사항을 정의하는 Concept ○ begin()과 end()를 제공하는 데이터 구조라면 모두 Range라고 볼 수 있음 Range는 range 라이브러리에서 제공한다.
Coroutine > 코루틴(coroutine)은 실행 도중에 일시 정지(suspend) 했다가, 이후에 다시 이어서 실행할 수 있는 함수를 의미한다.
Three-Way Comparison > 3방향 비교 연산자(three-way comparison)은 주어진 표현식의 평가 결과가 비교 대상이 되는 값과 같은지 아니면 그보다 크거나 작은지 알려주는 연산자이다.
Lambda 람다는 흔히 익명 함수라고 불린다. 람다 표현식을 사용하면 함수의 이름을 따로 정의하지 않고도 코드 중간에서 간단하게 함수를 만들고 바로 사용할 수 있다.
span 과거 C 스타일로 배열의 내용을 출력하려면 보통 배열 포인터와 크기를 함께 매개변수로 전달하는 방식이 사용되었다.
constexpr 이제 C++20부터는 vector, string과 같은 표준 컨테이너들에도 constexpr을 적용할 수 있게 되었다. 이뿐만 아니라, sort, find 등 대부분의 표준 알고리즘 함수들도 constexpr로 지원된다.