-
-
[分享]《探索现代化C++》泛读笔记摘要19
-
发表于: 2022-10-1 09:21 7562
-
《探索现代化C++》泛读笔记摘要19
Chapter 元编程
提供和使用类型信息
主要的头文件 <type_traits> 和 <limits>
Type Traits
C++11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <iostream> #include <complex> #include <vector> using namespace std; template<typename T> struct Magnitude { using type = T; }; / / 偏特化 template<typename T> struct Magnitude<std:: complex <T>> { using type = T; }; template<typename T> struct Magnitude<vector<T>> { using type = typename Magnitude<T>:: type ; }; template<typename T> T inline min_magnitude(const T& x, const T& y) { using std:: abs ; typename Magnitude<T>:: type ax = abs (x), ay = abs (y); return ax < ay ? x : y; } int main() { double d1 = 3. , d2 = 4. ; cout << "min |d1, d2| = " << min_magnitude(d1, d2) << '\n' ; std:: complex <double> c1( 3. ), c2( 4. ); cout << "min |c1, c2| = " << min_magnitude(c1, c2) << '\n' ; } |
C++11 条件异常处理
1 2 3 4 5 6 7 8 | #include <type_traits> template <typename T> inline T clone(const T& x) noexcept(std::is_nothrow_copy_constructible<T>::value) { return T{ x }; } |
一个应用——视图类
使用视图可以减少一些不必要的内存申请和释放,以及一些拷贝操作。
书上以矩阵视图类为例。
例子中使用了矩阵模板库(MTL)
这个项目比较复杂涉及boost,又涉及作者写的矩阵库。
关于元编程先跳读,因为迄今为止我还没怎么写过元编程相关的代码。
赞赏
他的文章
- 定位Windows分页结构内存区域 6916
- [原创]2022年,工业级EDR绕过蓝图 28273
- [分享]《探索现代化C++》泛读笔记摘要20 完! 7311
- [分享]《探索现代化C++》泛读笔记摘要19 7563
- [原创]摘微过滤驱动回调的研究-续 10163
看原图
赞赏
雪币:
留言: