mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-18 15:24:11 +00:00
[Destructive changes] add sprout::string constructor (already not an aggregate)
This commit is contained in:
parent
cb1077d247
commit
baf8995e81
17 changed files with 466 additions and 301 deletions
|
@ -38,23 +38,20 @@ namespace sprout {
|
|||
>
|
||||
inline SPROUT_CONSTEXPR sprout::basic_string<Elem, sprout::printed_integer_digits<IntType, Base>::value>
|
||||
int_to_string(IntType val, int digits, sprout::index_tuple<Indexes...>) {
|
||||
return val < 0 ? sprout::basic_string<Elem, sprout::printed_integer_digits<IntType, Base>::value>{
|
||||
{
|
||||
static_cast<Elem>('-'),
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
},
|
||||
static_cast<std::size_t>(digits + 1)
|
||||
}
|
||||
: sprout::basic_string<Elem, sprout::printed_integer_digits<IntType, Base>::value>{
|
||||
{
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
},
|
||||
static_cast<std::size_t>(digits)
|
||||
}
|
||||
typedef sprout::detail::string_construct_access<Elem, sprout::printed_integer_digits<IntType, Base>::value> access_type;
|
||||
return val < 0 ? access_type::raw_construct(
|
||||
static_cast<std::size_t>(digits + 1),
|
||||
static_cast<Elem>('-'),
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
)
|
||||
: access_type::raw_construct(
|
||||
static_cast<std::size_t>(digits),
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
)
|
||||
;
|
||||
}
|
||||
template<
|
||||
|
@ -64,14 +61,13 @@ namespace sprout {
|
|||
>
|
||||
inline SPROUT_CONSTEXPR sprout::basic_string<Elem, sprout::printed_integer_digits<IntType, Base>::value>
|
||||
int_to_string(IntType val, int digits, sprout::index_tuple<Indexes...>) {
|
||||
return sprout::basic_string<Elem, sprout::printed_integer_digits<IntType, Base>::value>{
|
||||
{
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
},
|
||||
static_cast<std::size_t>(digits)
|
||||
};
|
||||
typedef sprout::detail::string_construct_access<Elem, sprout::printed_integer_digits<IntType, Base>::value> access_type;
|
||||
return access_type::raw_construct(
|
||||
static_cast<std::size_t>(digits),
|
||||
(Indexes < digits ? sprout::detail::int_to_char<Elem>(sprout::detail::int_digit_at<Base>(val, digits - 1 - Indexes))
|
||||
: Elem()
|
||||
)...
|
||||
);
|
||||
}
|
||||
} // namespace detail
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue