C++ 将模板类型限制为数字

标签 c++ c++11 templates

我的意思是,我在 C++ 中有一个函数,我想将钱存入一个帐户。这个函数应该能够接受 float 、 double 、整数等,因为这些都是输入的有效形式,因为我只需要一个数字来存入。

因此,我声明:

template <typename type>
void Deposit(type t) {...}

现在我遇到的唯一问题是:从理论上讲,这个类的用户可能会向这个函数传递一个字符或字符串,并且这样做会产生意想不到的后果。我将如何将类型限制为整数、 float 、 double 和短整型?是否可以在函数定义中限制它,以便其他人在使用此函数编程时得到编译器/链接器错误,而不必使用 try{...} catch(...){...} ?

最佳答案

您需要什么 std::is_arithmetic将模板类型限制为算术类型(整数或 float )。你可以像这样使用它

template <typename T, typename std::enable_if<std::is_arithmetic<T>::value>::type* = nullptr>
void Deposit(T t) {...}

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

相关文章:

c++ - 信号处理程序与事件处理程序

c++ - 在变量中存储异常的正确方法

c++ - 将新元素插入/放置到 unordered_map/unordered_set 时的提示

c++ - 指针容器问题

c++ - 集成 Lua 以在我的游戏引擎中构建我的 GameEntities?

c++ - 每个文件的末尾是否总是有一个换行符 (\n)?

c++ - 升压::变体; std::unique_ptr 和复制

c++ - 当变量不是局部变量时我应该继续返回吗

java - 如何制作使用数字加法的模板类(其中模板扩展了 Number)?

javascript - 如何在 JavaScript mustache 模板上添加简单的 onclick?