add convert_array, to_string_array

This commit is contained in:
bolero-MURAKAMI 2013-08-03 20:03:13 +09:00
parent d8cb7a7887
commit f8bfa6eeba
4 changed files with 56 additions and 0 deletions

View file

@ -34,6 +34,15 @@ namespace sprout {
> type; > type;
return type{{sprout::forward<Types>(args)...}}; return type{{sprout::forward<Types>(args)...}};
} }
//
// convert_array
//
template<typename T, typename Converter, typename... Types>
inline SPROUT_CONSTEXPR sprout::array<T, sizeof...(Types)>
convert_array(Converter&& conv, Types&&... args) {
return sprout::make_array<T>(sprout::forward<Converter>(conv)(sprout::forward<Types>(args))...);
}
} // namespace sprout } // namespace sprout
#endif // #ifndef SPROUT_ARRAY_MAKE_ARRAY_HPP #endif // #ifndef SPROUT_ARRAY_MAKE_ARRAY_HPP

View file

@ -5,5 +5,7 @@
#include <sprout/string/string.hpp> #include <sprout/string/string.hpp>
#include <sprout/string/int_to_string.hpp> #include <sprout/string/int_to_string.hpp>
#include <sprout/string/float_to_string.hpp> #include <sprout/string/float_to_string.hpp>
#include <sprout/string/to_string_value.hpp>
#include <sprout/string/to_string_array.hpp>
#endif // #ifndef SPROUT_STRING_TO_STRING_HPP #endif // #ifndef SPROUT_STRING_TO_STRING_HPP

View file

@ -0,0 +1,20 @@
#ifndef SPROUT_STRING_TO_STRING_ARRAY_HPP
#define SPROUT_STRING_TO_STRING_ARRAY_HPP
#include <sprout/config.hpp>
#include <sprout/utility/forward.hpp>
#include <sprout/array/make_array.hpp>
#include <sprout/string/to_string_value.hpp>
namespace sprout {
//
// to_string_array
//
template<typename T, typename... Types>
inline SPROUT_CONSTEXPR sprout::array<T, sizeof...(Types)>
to_string_array(Types&&... args) {
return sprout::convert_array<T>(sprout::to_string_value(), sprout::forward<Types>(args)...);
}
} // namespace sprout
#endif // #ifndef SPROUT_STRING_TO_STRING_ARRAY_HPP

View file

@ -0,0 +1,25 @@
#ifndef SPROUT_STRING_TO_STRING_VALUE_HPP
#define SPROUT_STRING_TO_STRING_VALUE_HPP
#include <utility>
#include <sprout/config.hpp>
#include <sprout/utility/forward.hpp>
#include <sprout/string/string.hpp>
namespace sprout {
//
// to_string_value
//
struct to_string_value {
public:
template<typename T>
SPROUT_CONSTEXPR decltype(sprout::to_string(std::declval<T>()))
operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::to_string(std::declval<T>())))
{
return sprout::to_string(sprout::forward<T>(x));
}
};
} // namespace sprout
#endif // #ifndef SPROUT_STRING_TO_STRING_VALUE_HPP