Skip to content

Commit 94adc3e

Browse files
authored
Merge pull request #30 from ednolan/msvc_fix
Workaround for compilation failure on MSVC
2 parents 47c8faa + ff4a4ff commit 94adc3e

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

include/beman/iterator_interface/iterator_interface.hpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -142,21 +142,17 @@ struct iter_cat<IteratorConcept, ReferenceType, false> {};
142142

143143
template <typename IteratorConcept, typename ReferenceType>
144144
struct iter_cat<IteratorConcept, ReferenceType, true> {
145-
private:
146-
static constexpr auto compute_category_tag() {
147-
if constexpr (!std::is_reference_v<ReferenceType>) {
148-
return std::input_iterator_tag{};
149-
} else if constexpr (std::is_base_of_v<std::random_access_iterator_tag, IteratorConcept>) {
150-
return std::random_access_iterator_tag{};
151-
} else if constexpr (std::is_base_of_v<std::bidirectional_iterator_tag, IteratorConcept>) {
152-
return std::bidirectional_iterator_tag{};
153-
} else {
154-
return std::forward_iterator_tag{};
155-
}
156-
}
157-
158-
public:
159-
using iterator_category = std::invoke_result_t<decltype(compute_category_tag)>;
145+
using iterator_category =
146+
std::conditional_t<
147+
!std::is_reference_v<ReferenceType>,
148+
std::input_iterator_tag,
149+
std::conditional_t<
150+
std::is_base_of_v<std::random_access_iterator_tag, IteratorConcept>,
151+
std::random_access_iterator_tag,
152+
std::conditional_t<
153+
std::is_base_of_v<std::bidirectional_iterator_tag, IteratorConcept>,
154+
std::bidirectional_iterator_tag,
155+
std::forward_iterator_tag>>>;
160156
};
161157

162158
} // namespace detail

0 commit comments

Comments
 (0)