在编译时将参数包转换为数组的简单方法

simple way to convert parameter pack to array at compile time

有没有一种在编译时从参数包创建 std::array 的简单方法?

constexpr auto array = to_array<int>(1, 2, 3, 'a', 5.5f);

现有解决方案:

什么是实现它的简洁方法?

简单的怎么样

template <typename T, typename... Args>
constexpr std::array<T, sizeof...(Args)> to_array (Args && ... args)
 { return {{ std::forward<Args>(args)... }}; }

?

或者,如果您想添加 static_cast

template <typename T, typename... Args>
constexpr std::array<T, sizeof...(Args)> to_array (Args && ... args)
 { return {{ static_cast<T>(std::forward<Args>(args))... }}; }

并使用CTADauto return占位符,可以减少一些打字

template <typename T, typename... Args>
constexpr auto to_array (Args && ... args)
 { return std::array{ static_cast<T>(std::forward<Args>(args))... }; }