- using type = std::conditional_t<std::is_lvalue_reference<T>::value,
- std::reference_wrapper<typename std::remove_reference<T>::type>, T>;
+ using type =
+ std::conditional_t<std::is_lvalue_reference_v<T>, std::reference_wrapper<typename std::remove_reference_t<T>>, T>;
template <typename Iterator, typename... Args> struct iterator_wrapping {
private:
std::tuple<ref_or_value_t<Args>...> m_args;
template <typename Iterator, typename... Args> struct iterator_wrapping {
private:
std::tuple<ref_or_value_t<Args>...> m_args;
template <typename IteratorType, typename... Arguments>
friend constexpr iterator_wrapping<IteratorType, Arguments...> make_iterator_wrapping(Arguments&&... args);
template <typename IteratorType, typename... Arguments>
friend constexpr iterator_wrapping<IteratorType, Arguments...> make_iterator_wrapping(Arguments&&... args);
iterator_wrapping(const iterator_wrapping&) = delete;
iterator_wrapping(iterator_wrapping&&) = delete;
iterator_wrapping& operator=(const iterator_wrapping&) = delete;
iterator_wrapping(const iterator_wrapping&) = delete;
iterator_wrapping(iterator_wrapping&&) = delete;
iterator_wrapping& operator=(const iterator_wrapping&) = delete;
template <typename Iterator, typename... Args>
constexpr iterator_wrapping<Iterator, Args...> make_iterator_wrapping_explicit(Args... args)
{
template <typename Iterator, typename... Args>
constexpr iterator_wrapping<Iterator, Args...> make_iterator_wrapping_explicit(Args... args)
{