gpt4 book ai didi

c++ - 编译带时间符号的移位运算符

转载 作者:行者123 更新时间:2023-11-27 23:06:13 25 4
gpt4 key购买 nike

这是一个宏,因此我讨厌它,但它可以满足我的需求:

#define signed_shift(val,shift) ((shift) < 0 ? (val) >> -(shift) : (val) << (shift))

它需要是编译时(constexpr 可以在 C++11 中工作,但我被困在 C++98 中)。

任何人都有更好的方法(提升是可以的)。

最佳答案

template <int val, int shift>
struct signed_shift
{
static const int result = (shift < 0) ? (val >> -shift) : (val << shift);
};

int main()
{
BOOST_STATIC_ASSERT(signed_shift<4, 3>::result == 32);
BOOST_STATIC_ASSERT(signed_shift<4, 0>::result == 4);
BOOST_STATIC_ASSERT(signed_shift<4, -1>::result == 2);
}

关于c++ - 编译带时间符号的移位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com