小编Jim*_*Eli的帖子

用于指定任何无符号整数类型的 C++ 模板特征

I\xe2\x80\x99m 尝试实现一个仅接受无符号整数类型的函数。以下是我迄今为止尝试过的。它适用于“unsigned int”,但为什么 \xe2\x80\x99t 不能编译为“unsigned Short”?

\n\n
#include <iostream>\n#include <type_traits>\n\ntemplate<typename T, class = typename std::enable_if<std::is_unsigned<T>::value>::type>\ninline const T oddProduct(T n) noexcept {\n    return (n <= 1) ? n : (n % 2) ? oddProduct(n - 2)*n : oddProduct(--n);\n}\n\nint main() {\n    std::cout << "Product of odd integers from 1 to 15: " << oddProduct<unsigned short>(15) << std::endl;\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:MSVS 2017 社区 C++14 选项。

\n

c++ templates traits unsigned-integer

6
推荐指数
1
解决办法
3695
查看次数

标签 统计

c++ ×1

templates ×1

traits ×1

unsigned-integer ×1