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 的表达式,而 o 为 Out 类型的可解引用对象,则 indirectly_writable<Out, T> 仅若符合下列条件才被实现:
带 const_cast 的要求表达式阻止有纯右值 reference 类型的 indirectly_readable 对象意外满足 indirectly_writable 的语法要求,同时容许代理引用继续工作,只要其常性是浅的。见范围 TS 问题 381 。