더북(TheBook)

소스 코드를 이와 같이 작성할 경우, 모든 데이터 타입을 하나의 공통 타입으로 변환할 수 없어서 에러가 발생합니다. 정확한 에러 메시지는 “template argument deduction/substitution failed” 같은 문자열을 포함합니다.2 이는 문자열과 숫자를 모두 표현할 수 있는 공통의 자료형이 존재하지 않기 때문입니다.

연습 문제 2의 build_array() 같은 빌더 함수(builder function)는 입력 데이터 타입이 모호할 때에도 효과적으로 사용할 수 있습니다.

std::array는 더 많은 유용한 기능을 제공하도록 설계할 수도 있지만 그렇게는 하지 않고 있습니다. 이는 C 스타일 배열과의 유사성을 유지하면서 동시에 더 빠르고 메모리 효율적으로 동작하게 만들기 위함입니다.

std::array보다 유연하고 향상된 기능이 필요하다면 C++에서 제공하는 또 다른 컨테이너인 std::vector를 사용할 수 있습니다. std::vector에 대해서는 다음 절에서 자세히 알아보겠습니다.

 

 


2 역주 Ubuntu 18.04에서 gcc 7.4.0 버전 기준입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.