#pragma once #if !defined(MIJIN_UTIL_MISC_HPP_INCLUDED) #define MIJIN_UTIL_MISC_HPP_INCLUDED 1 #include #include namespace mijin { // // public functions // template constexpr decltype(auto) idValue(T&& value) { return std::forward(value); } namespace impl { template struct ConstructArrayHelper { template static constexpr std::array construct(const TArgs&... args, std::index_sequence) { return {idValue(T(args...))...}; } }; } template constexpr std::array constructArray(const TArgs&... args) { return impl::ConstructArrayHelper::construct(args..., std::make_index_sequence()); } } #endif // !defined(MIJIN_UTIL_MISC_HPP_INCLUDED)