functional_bit_not

functional_bit_not (비트 NOT 함수 객체)

std::bit_not은 비트 단위 NOT 연산을 수행하는 함수 객체예요. 즉, 타입 T에 대해 operator ~를 호출하는 효과를 가진답니다. C++14부터 사용할 수 있으며, 템플릿 인자를 생략하면 파라미터와 반환 타입을 자동으로 추론하는 투명한 특수화도 제공해요.

출처: cppreference

본문

<functional> 헤더에 정의되어 있어요.

Defined in header <functional>
template < class T = void > struct bit_not ; (since C++14)

비트 NOT을 수행하는 함수 객체예요. 실제로는 타입 T에 대해 operator ~를 호출해요.

특수화 (Specializations)

표준 라이브러리는 T가 지정되지 않은 경우 std::bit_not의 특수화를 제공해요. 이때 파라미터 타입과 반환 타입은 추론되도록 남겨둔답니다.

bit_not<void> (C++14) ~ x를 구현하며 파라미터와 반환 타입을 추론하는 함수 객체 (클래스 템플릿 특수화) [edit]

멤버 타입 (Member types)

Type Definition
result_type (C++17에서 deprecated, C++20에서 제거) T
argument_type (C++17에서 deprecated, C++20에서 제거) T

멤버 함수 (Member functions)

operator() (C++14) 인자의 비트 NOT 결과를 반환해요 (public member function)

std::bit_not::operator()

constexpr T operator()( const T& arg ) const; (since C++14)

arg의 비트 NOT 결과를 반환해요.

매개변수 (Parameters)

arg - 비트 NOT을 계산할 값

반환값 (Return value)

~ arg의 결과예요.

예외 (Exceptions)

구현에서 정의된 예외를 던질 수 있어요.

가능한 구현 (Possible implementation)

constexpr T operator()( const T& arg ) const { return ~arg; }

참고 (Notes)

std::bit_not은 C++11 이후 제안서 N3421을 통해 추가되었지만, 일반적인 구현에서는 LWG issue 660의 해결책의 일부로 취급돼요. 다만 투명한 특수화인 std::bit_not<>은 예외이며, 이러한 구현들은 C++98/03 모드에서도 이 기능을 사용할 수 있게 해준답니다.

더 알아보기 (Learn more)

cppreference