我正在编写一个类,它需要实例化的模板类型在位移操作下表现得像无符号类型。之所以如此,是因为位移操作下的负数与位移操作下的正数表现不同。因此,我的想法是简单地将我作为模板参数获得的任何类型转换为 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/