Concepts - 도전 2 출력 가능한 타입만 받는 API 만들기


목표

스트림 출력이 가능한 타입만 받는 named concept를 직접 정의한다.

요구 사항

  • Streamable concept를 만든다.
  • std::ostream& << value 표현식이 유효한지 검사한다.
  • print_value 같은 함수를 만들고 Streamable 타입만 허용한다.

검증 포인트

  • int, std::string은 통과하는가
  • 사용자 정의 타입은 연산자 제공 여부에 따라 결과가 달라지는가
  • 실패 타입에서 오류 메시지가 읽기 쉬운가

메모

  • requires 표현식을 사용한다.
  • 반환 타입까지 확인하면 더 좋다.