#ifndef SPROUT_ARRAY_MAKE_ARRAY_HPP #define SPROUT_ARRAY_MAKE_ARRAY_HPP #include #include #include #include #include #include #include namespace sprout { // // make_array // template inline SPROUT_CONSTEXPR sprout::array make_array(Types&&... args) { return sprout::array{{sprout::forward(args)...}}; } // // make_common_array // template inline SPROUT_CONSTEXPR sprout::array< typename sprout::common_decay::type, sizeof...(Types) > make_common_array(Types&&... args) { typedef sprout::array< typename sprout::common_decay::type, sizeof...(Types) > type; return type{{sprout::forward(args)...}}; } // // convert_array // template inline SPROUT_CONSTEXPR sprout::array convert_array(Converter&& conv, Types&&... args) { return sprout::make_array(sprout::forward(conv)(sprout::forward(args))...); } } // namespace sprout #endif // #ifndef SPROUT_ARRAY_MAKE_ARRAY_HPP