, , .
, . , , . , std::is_same :
template <typename T, typename... Args>
constexpr auto make_array(Args&&... args) -> std::array<T, sizeof...(Args)>
{
static_assert((std::is_same<std::remove_cv_t<T>, std::decay_t<Args>>{} && ...),
"arguments shall be of same type.");
return {{std::forward<Args>(args)...}};
}
int main()
{
auto a = make_array<int>(1, 2, 3);
}
1, 2 3 int, . , . float, , is_same<int, float> false.
std::make_array , (, make_array<int>), . .
, , , .