.. Metafunctions/Bitwise Operations//shift_right shift_right =========== Synopsis -------- .. parsed-literal:: template< typename T , typename Shift > struct shift_right { typedef |unspecified| type; }; Description ----------- Returns the result of bitwise *shift right* (``>>``) operation on ``T``. Header ------ .. parsed-literal:: #include #include Model of -------- |Numeric Metafunction| Parameters ---------- +---------------+-------------------------------+---------------------------+ | Parameter | Requirement | Description | +===============+===============================+===========================+ | ``T`` | |Integral Constant| | A value to shift. | +---------------+-------------------------------+---------------------------+ | ``Shift`` | Unsigned |Integral Constant| | A shift distance. | +---------------+-------------------------------+---------------------------+ |Note:| |numeric metafunction note| |-- end note| Expression semantics -------------------- For arbitrary |Integral Constant| ``c`` and unsigned |Integral Constant| ``shift``: .. parsed-literal:: typedef shift_right::type r; :Return type: |Integral Constant|. :Semantics: Equivalent to .. parsed-literal:: typedef integral_c< c::value_type , ( c::value >> shift::value ) > r; .. .......................................................................... .. parsed-literal:: typedef shift_right r; :Return type: |Integral Constant|. :Semantics: Equivalent to .. parsed-literal:: struct r : shift_right::type {}; Complexity ---------- Amortized constant time. Example ------- .. parsed-literal:: typedef integral_c u0; typedef integral_c u1; typedef integral_c u2; typedef integral_c u8; BOOST_MPL_ASSERT_RELATION( (shift_right::value), ==, 0 ); BOOST_MPL_ASSERT_RELATION( (shift_right::value), ==, 1 ); BOOST_MPL_ASSERT_RELATION( (shift_right::value), ==, 0 ); BOOST_MPL_ASSERT_RELATION( (shift_right::value), ==, 1 ); BOOST_MPL_ASSERT_RELATION( (shift_right::value), ==, 4 ); See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |shift_left|, |bitand_|