std::indirectly_writable_C++中文网

  concept indirectly_writable =
    requires(Out&& o, T&& t) {
      *o = std::forward<T>(t);
      *std::forward<Out>(o) = std::forward<T>(t);
      const_cast<const std::iter_reference_t<Out>&&>(*o) = std::forward<T>(t);
      const_cast<const std::iter_reference_t<Out>&&>(*std::forward<Out>(o)) =
        std::forward<T>(t);
    };

   

// 上述四个表达式都不要求保持相等性

e 为满足 decltype((e))T 的表达式,而 oOut 类型的可解引用对象,则 indirectly_writable<Out, T> 仅若符合下列条件才被实现:

const_cast 的要求表达式阻止有纯右值 reference 类型的 indirectly_readable 对象意外满足 indirectly_writable 的语法要求,同时容许代理引用继续工作,只要其常性是浅的。见范围 TS 问题 381