From ea5b6815f5929cdb086f76d43f3e9b122bbcaaeb Mon Sep 17 00:00:00 2001 From: Samuel Urban Date: Tue, 12 Nov 2024 13:51:15 +0100 Subject: [PATCH] Fixed "friend function template with constraints that depend on outer template parameters must be a definition" errors on newer GCC (#13) Co-authored-by: Samuel Urban <> --- include/more_concepts/mock_iterator.hpp | 72 ++++++++++++++++++------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/include/more_concepts/mock_iterator.hpp b/include/more_concepts/mock_iterator.hpp index 12746c0..6384173 100644 --- a/include/more_concepts/mock_iterator.hpp +++ b/include/more_concepts/mock_iterator.hpp @@ -29,57 +29,93 @@ namespace more_concepts using iterator_category = IteratorCategory; using difference_type = std::ptrdiff_t; - auto operator++() -> mock_iterator&; + auto operator++() -> mock_iterator& { + return {}; + } - auto operator++(int) -> mock_iterator; + auto operator++(int) -> mock_iterator { + return {}; + } - auto operator*() const -> typename mock_iterator::deref_result; + auto operator*() const -> typename mock_iterator::deref_result { + return {}; + } auto operator->() const -> typename mock_iterator::arrow_result - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator==(mock_iterator const&) const -> bool - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator--() -> mock_iterator& - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator--(int) -> mock_iterator - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator+=(difference_type) -> mock_iterator& - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator-=(difference_type) -> mock_iterator& - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator[](difference_type) const -> typename mock_iterator::deref_result - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator+(difference_type) const -> mock_iterator - requires std::derived_from; + requires std::derived_from { + return {}; + } template D> friend auto operator+(D const&, mock_iterator const&) -> mock_iterator - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator-(difference_type const&) const -> mock_iterator - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator-(mock_iterator const&) const -> difference_type - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator<(mock_iterator const&) const -> bool - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator>(mock_iterator const&) const -> bool - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator<=(mock_iterator const&) const -> bool - requires std::derived_from; + requires std::derived_from { + return {}; + } auto operator>=(mock_iterator const&) const -> bool - requires std::derived_from; + requires std::derived_from { + return {}; + } }; template