Skip to content

Commit

Permalink
馃洜 Only reconstruct on array-ish types!
Browse files Browse the repository at this point in the history
  • Loading branch information
ThePhD committed Jun 19, 2022
1 parent 967aab6 commit 5350354
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
16 changes: 8 additions & 8 deletions include/ztd/text/detail/span_or_reconstruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ namespace ztd { namespace text {
if constexpr (is_specialization_of_v<_UInput, ::std::basic_string_view> || ::ztd::is_span_v<_UInput>) {
return true;
}
else if constexpr (ranges::is_iterator_contiguous_iterator_v<ranges::range_iterator_t<_CVInput>>) {
else if constexpr (::std::is_array_v<_UInput> // cf-hack
&& ranges::is_iterator_contiguous_iterator_v<ranges::range_iterator_t<_CVInput>>) {
using _Ty = ::ztd::ranges::range_value_type_t<_UInput>;
using _Tag = ::std::in_place_type_t<::ztd::span<_Ty>>;
return ::ztd::ranges::__rng_detail::__is_cascade_range_reconstruct_noexcept<_Tag, _Input>();
Expand All @@ -70,9 +71,8 @@ namespace ztd { namespace text {
constexpr bool __string_view_or_span_or_reconstruct_noexcept() {
using _CVInput = ::std::remove_reference_t<_Input>;
using _UInput = remove_cvref_t<_Input>;
if constexpr (
::std::is_array_v<
_UInput> && ::std::is_const_v<::std::remove_extent_t<_CVInput>> && ::std::is_lvalue_reference_v<_Input>) {
if constexpr (::std::is_array_v<_UInput> // cf-hack
&& ::std::is_const_v<::std::remove_extent_t<_CVInput>> && ::std::is_lvalue_reference_v<_Input>) {
using _CharTy = ::std::remove_extent_t<_UInput>;
if constexpr (is_char_traitable_v<_CharTy>) {
return ::std::is_nothrow_constructible_v<::std::basic_string_view<_CharTy>, _Input>;
Expand All @@ -97,7 +97,8 @@ namespace ztd { namespace text {
if constexpr (is_specialization_of_v<_UInput, ::std::basic_string_view> || ::ztd::is_span_v<_UInput>) {
return __input;
}
else if constexpr (ranges::is_iterator_contiguous_iterator_v<ranges::range_iterator_t<_VInput>>) {
else if constexpr (::std::is_array_v<_UInput> // cf-hack
&& ranges::is_iterator_contiguous_iterator_v<ranges::range_iterator_t<_VInput>>) {
using _Ty = ::std::remove_reference_t<::ztd::ranges::range_reference_t<_VInput>>;
return ::ztd::ranges::reconstruct(
::std::in_place_type<::ztd::span<_Ty>>, ::std::forward<_Input>(__input));
Expand All @@ -113,9 +114,8 @@ namespace ztd { namespace text {
using _CVInput = ::std::remove_reference_t<_Input>;
using _UInput = remove_cvref_t<_Input>;
// try to catch string literal_ts / arrays
if constexpr (
::std::is_array_v<
_UInput> && ::std::is_const_v<::std::remove_extent_t<_CVInput>> && ::std::is_lvalue_reference_v<_Input>) {
if constexpr (::std::is_array_v<_UInput> // cf-hack
&& ::std::is_const_v<::std::remove_extent_t<_CVInput>> && ::std::is_lvalue_reference_v<_Input>) {
using _CharTy = ::std::remove_extent_t<_UInput>;
if constexpr (is_char_traitable_v<_CharTy>) {
return ::std::basic_string_view<_CharTy>(::std::forward<_Input>(__input));
Expand Down
2 changes: 1 addition & 1 deletion tests/basic_run_time/source/transcode_one.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ inline namespace ztd_text_tests_basic_run_time_transcode_one {
to_encoding, ztd::text::replacement_handler);
REQUIRE(result0_output == independent_result0_output);
expected_it += result0_output.size();
source_it += result0.input.size();
source_it = std::move(result0.input.begin());
}
REQUIRE(source_it == source_last);
REQUIRE(expected_it == expected_last);
Expand Down

0 comments on commit 5350354

Please sign in to comment.