비트 연산으로 덧셈하기

#include <concepts>

template<std::integral I>
constexpr auto add(I x, I y) -> I {
    return x ? add((x & y) << 1, x ^ y) : y;
}
2 Likes

구… 지요?

template<typename I>
constexpr auto adder(I a, I b, I c = 0) -> I {
    return a ? adder(((a & b) | ((a ^ b) & c)) << 1 , (a ^ b) ^ c) : b;
}

저것도 퀴즈로 나오지 않았다면 몰랐을 지식이었는데