diff --git a/CMakeLists.txt b/CMakeLists.txt index b5dba32..0d7df84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ target_sources( include FILES include/stdx/algorithm.hpp + include/stdx/array.hpp include/stdx/atomic.hpp include/stdx/atomic_bitset.hpp include/stdx/bit.hpp diff --git a/docs/intro.adoc b/docs/intro.adoc index 90f22ae..5a446cc 100644 --- a/docs/intro.adoc +++ b/docs/intro.adoc @@ -67,6 +67,7 @@ into headers whose names match the standard. The following headers are available: * https://github.com/intel/cpp-std-extensions/blob/main/include/stdx/algorithm.hpp[`algorithm.hpp`] +* https://github.com/intel/cpp-std-extensions/blob/main/include/stdx/array.hpp[`array.hpp`] * https://github.com/intel/cpp-std-extensions/blob/main/include/stdx/atomic.hpp[`atomic.hpp`] * https://github.com/intel/cpp-std-extensions/blob/main/include/stdx/atomic_bitset.hpp[`atomic_bitset.hpp`] * https://github.com/intel/cpp-std-extensions/blob/main/include/stdx/bit.hpp[`bit.hpp`] diff --git a/include/stdx/array.hpp b/include/stdx/array.hpp new file mode 100644 index 0000000..b0952de --- /dev/null +++ b/include/stdx/array.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include + +namespace stdx { +inline namespace v1 { + +template +constexpr auto make_array(Ts &&...ts) { + if constexpr (not std::is_void_v) { + return std::array{std::forward(ts)...}; + } else { + using A = std::common_type_t; + return std::array{std::forward(ts)...}; + } +} + +template