3. std::array를 사용하려면 원소의 타입과 원소 개수를 지정해야 합니다. std::array에 저장할 원소의 타입을 결정하기 위해 std::common_type 템플릿을 사용할 수 있습니다. 이 작업은 함수 인자에 의존적이기 때문에 함수 반환형을 후행 리턴 타입(trailing return type)으로 지정합니다.
template<typename ... Args>
auto build_array(Args&&... args) -> std::array<typename std::common_type <Args...>::type, ?>
{
using commonType = typename std::common_type<Args...>::type;
// 배열 생성
}
4. 앞서 작성한 코드에 추가로 원소 개수를 알아내는 코드와 commonType을 이용하여 배열을 생성하는 코드를 입력합니다.
template<typename ... Args>
auto build_array(Args&&... args) -> std::array<typename std::common_type <Args...>::type, sizeof...(args)>
{
using commonType = typename std::common_type<Args...>::type;
return {std::forward<commonType>((Args&&)args)...};
}