Advertisement
Radfler

::make_array

Jun 15th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include <array>
  2. #include <type_traits>
  3. #include <utility>
  4.  
  5. namespace details {
  6.  
  7.   template<typename ValueType, typename... Args>
  8.   using array_value_type = typename std::conditional<
  9.    
  10.     std::is_same<ValueType, void>::value,
  11.     typename std::common_type<Args...>::type,
  12.     ValueType
  13.    
  14.   >::type;
  15.  
  16.   template<typename ValueType, typename... Args>
  17.   using make_array_t = std::array<array_value_type<ValueType, Args...>, sizeof...(Args)>;
  18.  
  19. }
  20.  
  21. template<typename ValueType = void, typename... Args>
  22. constexpr auto make_array(Args&&... args) -> details::make_array_t<ValueType, Args&&...> {
  23.   return details::make_array_t<ValueType, Args&&...>{std::forward<Args>(args)...};
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement