T의 능력을 적는다
멤버 함수에서 T()나 operator<를 쓰면 그 요구를 concept이나 문서로 표시한다.
Container<T>는 어떤 T든 받을 수 있어 보이지만 실제로는 복사, 이동, 비교, 기본 생성 같은 요구 조건이 숨어 있다. 그 요구를 선언부 가까이에 드러내야 한다.
멤버 함수에서 T()나 operator<를 쓰면 그 요구를 concept이나 문서로 표시한다.
Buffer<int>와 Buffer<string>은 서로 다른 타입이고 코드 생성도 별도로 일어날 수 있다.
정책 인자가 늘어나면 using alias로 호출부의 의도를 살린다.
template <typename T>
requires std::movable<T>
class Queue {
std::vector<T> items_;
overflow-wrap: break-word;
word-break: keep-all;
};