公司动态
c++14 新增内容
目录一二进制字面量二数字分隔符三放宽 constexpr四泛型 lambda五变量模板一二进制字面量#include iostream int main() { int num 0b10101010; int result num 0b00001111; std::cout Result: result std::endl; return 0; }二数字分隔符常规用法#include iostream int main() { int billion 1000000000; std::cout One billion is: billion std::endl; return 0; }或者#include iostream int main() { int billion 1000000000; std::cout One billion is: billion std::endl; return 0; }实际上分隔符是比较自由的可以不等距的加只不过一般情况下这样做没有任何意义。三放宽 constexprconstexpr的函数定义中允许更多的语法了比如if elseconstexpr int func(int nIndex) { if (nIndex 0) return 0; else if (nIndex 10) return nIndex; else return nIndex * 10; } #include iostream int main() { constexpr int x func(100); std::cout x std::endl; // Output: 1000 return 0; }输出1000四泛型 lambda把lambda表达式的n个入参都写成auto类型就成了一个有n个不同的模板类型参数的泛型函数。#include iostream auto add [](auto a, auto b) { return a b; }; int main() { auto add [](auto a, auto b) { return a b; }; std::cout 3 5 add(3, 5) std::endl; // 处理整数 std::cout 3.2 5.7 add(3.2, 5.7) std::endl; // 处理浮点数 return 0; }输出3 5 83.2 5.7 8.9五变量模板#include iostream template typename T constexpr T pi T(3.1415926535897932385); template typename T T area(T r) { return piT *r * r; } int main() { std::cout piint std::endl; // 输出3 std::cout area(2.0) std::endl; // 输出12.5664 }输出312.5664