c++ - 在 Typedef 中转换模板参数

标签 c++ templates type-conversion typedef

我正在编写一个类,它需要实例化的模板类型在位移操作下表现得像无符号类型。之所以如此,是因为位移操作下的负数与位移操作下的正数表现不同。因此,我的想法是简单地将我作为模板参数获得的任何类型转换为 typedef 中的无符号版本,并且在内部仅使用 typedefed 版本。如果模板参数类型不支持这个,那么......它根本不支持并且会出现编译时错误。我试过的是这样的:

template <class X>
class C
{
    using Y = unsigned X;
};

这是不正确的:错误:type-id 不能有名称

这是否可能,如果可能的话如何?

最佳答案

您正在寻找 std::make_unsigned :

template <class X>
class C
{
    using Y = std::make_unsigned_t<X>;
};

关于c++ - 在 Typedef 中转换模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40022468/

相关文章:

c++ - 虚拟模板函数重载

css - 移动网站的嵌入式 CSS 模板?

java - JLayeredPane z 顺序问题

mysql - 数据库中的浮点值转换

c++ - 如何限制模板仿函数返回和参数类型

c++ - map c++​​中如何注册成员函数

c++ - JNI 与 C++ 对象实例

c++ - 在 Qt 中将一个小部件与另一个小部件交换

c++ - 模板代码上的编译器堆栈溢出

javascript - "=="的对象相等性的标准定义是什么?