std::indirectly_copyable

std::indirectly_copyable (간접 복사 가능 컨셉)

indirectly_readable 타입과 indirectly_writable 타입 사이의 관계를 명세하는 컨셉이에요. 쓰기 가능한 타입이 읽기 가능한 타입이 참조하는 객체를 직접 복사할 수 있어야 해요. C++20부터 있어요.

출처: cppreference

본문

<iterator> 헤더에 정의돼 있어요.

template< class In, class Out >
concept indirectly_copyable =
    std::indirectly_readable<In> &&
    std::indirectly_writable<Out, std::iter_reference_t<In>>;

indirectly_copyable 컨셉은 indirectly_readable 타입과 indirectly_writable 타입 사이의 관계를 명세해요. indirectly_writable 타입이 indirectly_readable 타입이 참조하는 객체를 직접 복사할 수 있어야 해요.

예제

#include <iterator>
#include <vector>
#include <concepts>

int main()
{
    static_assert(std::indirectly_copyable<std::vector<int>::iterator,
                                           std::vector<int>::iterator>);
    static_assert(std::indirectly_copyable<int*, int*>);
}

더 알아보기 (Learn more)

cppreference