Проблема с `std ::ally_ordered` и` std :: basic_const_iterator` внутри другого итератораC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблема с `std ::ally_ordered` и` std :: basic_const_iterator` внутри другого итератора

Сообщение Anonymous »

Следующий код вообще не компилируется из -за (вероятно) рекурсии бесконечности. /> std :: remove_reference :: type & __t, const typename
std :: remove_reference :: type & __u) {{__t decktype (auto)
[tress std :: __ detail: __bolean_testable ; /> __ u} -> decktype (auto) [Tress std :: __ detail :: __ boolean_testable ]; {__ t
decltype (auto) [требуется
std :: __ detail :: __ boolean_testable ]; /> decktype (auto) [tress
std :: __ detail :: __ boolean_testable ]; {__ u
decltype (auto) [tress
std :: __ detail :: __ boolean_testable ]; [Требуется
std :: __ detail :: __ boolean_testable ]; {__ u
decltype (auto) [Tress
std :: __ detail :: __ boolean_testable ]; {__ u> = __t} ->
dectypable ]; {__ u> = __t} /> std :: __ detail :: __ boolean_testable ];} [с _tp =
permutated_iterator 'Заповедите. /> < /blockquote>
Я действительно не понимаю, почему. < /p>
#include
#include
#include

using namespace std;

template
requires (unsigned_integral
&& !is_same_v)
struct permutated_iterator
{
private:

T1 p{}; ///< Permutation vector iterator.
T2 v{}; ///< Permutated vector iterator.

public:

/// Default constructor is needed from std::forward_iterator concept.
constexpr permutated_iterator() = default;

/** Constructor for dense permutated vector iterator.
\param p Permutation vector iterator, pointing in current position of this iterator.
\param v The permutated vector iterator, pointing in start of vector. */
constexpr permutated_iterator(T1 p, T2 v) noexcept : p{p}, v{v} {}

constexpr bool operator==(const permutated_iterator &it) const noexcept { return p == it.p; }
constexpr auto operator(const permutated_iterator &it) const noexcept { return p it.p; }
};

int main()
{
using piter = std::span::iterator;
using viter = std::span::iterator ;
using cpiter = std::basic_const_iterator ;
using iter1 = permutated_iterator ;
using iter2 = permutated_iterator;
static_assert(std::totally_ordered);
static_assert(std::totally_ordered);
static_assert(std::totally_ordered);
static_assert(std::totally_ordered);
static_assert(std::totally_ordered); // PROBLEM!!!!

// this is ok: iter2() == iter2()
// this is not ok: iter2() > iter2()
}
< /code>
обновление < /strong>
Это ошибка G ++. Исправлено в G ++ 15.1.


Подробнее здесь: https://stackoverflow.com/questions/782 ... inside-ano
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»