繁体   English   中英

类模板:限制模板参数

[英]Class templates: restrict the template parameter

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

假设我希望下一个类只能保存实数(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
};

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM