| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIBBRILLO_BRILLO_ARRAY_UTILS_H_ |
| #define LIBBRILLO_BRILLO_ARRAY_UTILS_H_ |
| |
| #include <array> |
| #include <utility> |
| |
| namespace brillo { |
| |
| // Create a std::array from a set of values without manually specifying the |
| // size of the array. Note that unlike the make_array likely to make its way |
| // into C++20, this function always requires the user to specify ElementType. |
| // This is done so that users are not surprised by the element type of resulting |
| // arrays when std::common_type is used. |
| template <typename ElementType, typename... T> |
| constexpr auto make_array(T&&... values) { |
| return std::array<ElementType, sizeof...(T)>{ |
| static_cast<ElementType>(std::forward<T>(values))...}; |
| } |
| |
| } // namespace brillo |
| |
| #endif // LIBBRILLO_BRILLO_ARRAY_UTILS_H_ |