/*============================================================================= Copyright (c) 2011-2013 Bolero MURAKAMI https://github.com/bolero-MURAKAMI/Sprout Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #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