std::indirectly_movable
std::indirectly_movable (간접 이동 가능 컨셉)
indirectly_readable 타입과 indirectly_writable 타입 사이의 관계를 명세하는 컨셉이에요. 쓰기 가능한 타입이 읽기 가능한 타입이 참조하는 객체를 직접 이동할 수 있어야 해요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class In, class Out >
concept indirectly_movable =
std::indirectly_readable<In> &&
std::indirectly_writable<Out, std::iter_rvalue_reference_t<In>>;
indirectly_movable 컨셉은 indirectly_readable 타입과 indirectly_writable 타입 사이의 관계를 명세해요. indirectly_writable 타입이 indirectly_readable 타입이 참조하는 객체를 직접 이동할 수 있어야 해요.
예제
#include <iterator>
#include <vector>
#include <concepts>
int main()
{
static_assert(std::indirectly_movable<std::vector<int>::iterator,
std::vector<int>::iterator>);
static_assert(std::indirectly_movable<int*, int*>);
}