c++ - 类模板 : restrict the template parameter

标签 c++ templates

我可以决定编译器可以生成哪些类型的模板类吗?

假设我希望下一个类只能容纳实数( float 、 double )而不是整数类型。

//can I force T to be only real number types?
template<typename T>
class RealNumber
{
public:
    T num;

    RealNumber() : num() {}

    void add(T x) { num += x; }
    T get() const { return num; }
};

所以这应该会产生一个编译错误:

RealNumber<int> myrealnumber;

最佳答案

您可以断言该类型具有特定的特征:

#include <type_traits>

template<typename T>
class RealNumber
{
    static_assert(std::is_floating_point<T>::value, "Type must be floating point");

    // and so on
};

如果类型不合适,这将导致编译时错误。

关于c++ - 类模板 : restrict the template parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815420/

相关文章:

c++ - 将文件中的十六进制数转换为 ASCII

c++ - 用公共(public)指针交换指向已分配内存的指针

javascript - Javascript可以编译Django的模板吗?

c++ - 简单参数包扩展 : expected ';'

c++ - 为什么链接器不提示多个函数定义(仅使用模板函数)?

c++ - 在链表中添加两个数字

c++ - 按地区列出的美国各州列表,如何读取文件并根据用户的 3 个输入选择最大的州?

c++ - 如何使用CUDA以正确的方式在C++项目和C++中的DLL之间传输数据?

c++ - 如何为子函数指定模板参数?

templates - std::function<...> 上的重载