Я смотрел на то, как был реализован concat_view в Ranges-V3 и наткнулся на какой-то, казалось бы, неизвестный синтаксис для шаблонного конструктора: [code]template struct sentinel { private: friend struct sentinel; friend struct cursor; template using constify_if = meta::const_if_c; using concat_view_t = constify_if; sentinel_t end_;
public: sentinel() = default; sentinel(concat_view_t * rng, end_tag) : end_(end(std::get(rng->rngs_))) {} //! This here is what I'm asking about: template(bool Other)( requires IsConst AND CPP_NOT(Other)) // sentinel(sentinel that) : end_(std::move(that.end_)) {} }; [/code] Этот код можно найти здесь.>