gpt4 book ai didi

c++ - 将 C++ 模板限制为原始类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:14 26 4
gpt4 key购买 nike

我有一个类,它基本上是一个 double 的包装器,允许将其值强制为静态值:

class ModelParameter
{
protected:
double val;
bool isForced;
double forcedVal;

public:
ModelParameter(void);
ModelParameter(double value);
double getValue(void);
void setValue(double value);
bool getIsForced(void);
void forceValue(double value);
void unforceValue(void);
};

但我希望能够将它用于任何基本类型,而不仅仅是 double 。如果我这样重新定义它:

template <class T>
class ModelParameter
{
protected:
T val;
bool isForced;
T forcedVal;

public:
ModelParameter(void);
ModelParameter(T value);
T getValue(void);
void setValue(T value);
bool getIsForced(void);
void forceValue(T value);
void unforceValue(void);
};

这意味着可以使用任何类型,无论它是否是原始类型。有什么方法可以将模板中使用的类型限制为仅使用基本类型吗?

最佳答案

(注意:需要 C++11)

#include <type_traits>

template <class T>
class ModelParameter
{
static_assert(std::is_fundamental<T>::value, "error message");
...
};

但是你为什么要这样做呢?

关于c++ - 将 C++ 模板限制为原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com