3 Star 2 Fork 3

四月是你的谎言/深入应用C++11:代码优化与工程级应用 的实践代码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2-8.cpp 1.36 KB
一键复制 编辑 原始数据 按行查看 历史
#include <iostream>
#include <type_traits>
//std::enable_if 具备限定模板参数的作用,可以在编译器检查输入模板参数的有效性
template<class T>
typename std::enable_if<std::is_integral<T>::value, bool>::type //is_integral 必须传入整型 类似的还有 is_floating_point is_pointer etc...
is_odd(T i) { return bool(i%2); }
template<class T,
class = typename std::enable_if<std::is_integral<T>::value>::type>
bool is_even(T i) { return !bool(i % 2); }
/*template<class T>*/
//typename std::enable_if<std::is_arithmetic<T>::value, std::string>::type
//ToString(T & t) { return std::to_string(t); }
//template <class T>
//typename std::enable_if<!std::is_same<T, std::string>::value, std::string>::type
//ToString(T & t) {return t;}
int main(void)
{
short int i = 1;
short int r = 2;
double f = 2.1;
std::cout << std::boolalpha;
std::cout << "i is odd: " << is_odd(i) << std::endl;
std::cout << "i is event: " << is_even(i) << std::endl;
std::cout << "i is odd: " << is_odd(r) << std::endl;
std::cout << "i is event: " << is_even(r) << std::endl;
//no matching function for call to 'is_even(double&)'
/* std::cout << "i is odd: " << is_odd(f) << std::endl;*/
/*std::cout << "i is event: " << is_even(f) << std::endl;*/
std::string pi = "pi is" + std::to_string(3.1415926);
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/HeLiangMsg/c11_book_learned_code.git
[email protected]:HeLiangMsg/c11_book_learned_code.git
HeLiangMsg
c11_book_learned_code
深入应用C++11:代码优化与工程级应用 的实践代码
master

搜索帮助