blob: d180d355d83179a5a600feeae488d7badd23f486 [file] [log] [blame]
// 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_