记录一下mpl学习结果:
引用
1-1.
Turn vector_c<int,1,2,3> into a type sequence with elements (2,3,4) using transform.
对vector做一个加1就可以了
typedef mpl::vector_c<int,1,2,3> AAA;
typedef mpl::vector_c<int,2,3,4> CCC;
typedef mpl::transform<AAA,mpl::plus<_1, mpl::int_<1> > >::type BBB;
BOOST_STATIC_ASSERT((
mpl::equal<BBB,CCC>::type::value
));
引用
1-2.
Turn vector_c<int,1,2,3> into a type sequence with elements (1,4,9) using transform.
对两个AAA相乘
typedef mpl::vector_c<int,1,4,9> DDD;
typedef mpl::transform<AAA,AAA, mpl::multiplies<_1,_2> >::type EEE;
BOOST_STATIC_ASSERT((
mpl::equal<DDD,EEE>::type::value
));
引用
1-5.
There's still a problem with the dimensional analysis code in section 1.1. Hint: What happens when you do:
f = f + m * a;
Repair this example using techniques shown in this chapter.
加法操作支持两种类型,然后确保类型是一致的就可以了
template <class T, class D1, class D2>
quantity<T,D1>
operator+(quantity<T,D1> x, quantity<T,D2> y)
{
BOOST_STATIC_ASSERT((
mpl::equal<D1,D2>::type::value
));
return quantity<T,D1>(x.value() + y.value());
}
分享到:
相关推荐
1. **Boost库介绍**:Boost是一个包含各种实用工具和库的集合,旨在提高C++的性能、可移植性和易用性。它为C++标准库提供了许多补充,包括模板元编程、智能指针、并发工具、文件系统操作等。 2. **模板元编程**:...
1. 泛型编程:如`boost::lambda`库提供了一种在C++中实现函数式编程的方式,`boost::mpl`(Meta-Programming Library)允许在编译时进行计算和类型操作。 2. 并发与多线程:`boost::thread`库提供了线程管理的功能...
《深入实践Boost:Boost程序库开发的94个...总之,《深入实践Boost:Boost程序库开发的94个秘笈》是 C++ 开发者深入学习 Boost 库的宝贵资源,无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程技能。
1. **Boost库概述**:Boost库由一系列独立的模块组成,涵盖了并发性、泛型编程、算法、数据结构、数学运算、元编程等多个方面。这些模块为C++程序员提供了丰富的工具,能够提高代码的效率、可读性和可维护性。 2. *...
1. 泛型编程:例如`boost::mpl`(Meta-Programming Library)和`boost::proto`(Proto Expression Template Library),它们提供了元编程工具,允许在编译时进行复杂的计算和类型操作。 2. 模板元编程:`boost::type_...
10. **其他实用工具**:可能还会介绍如`boost::variant`(多态数据类型)、`boost::any`(任意类型存储)以及`boost::mpl`(元编程库)等其他Boost组件。 通过阅读《Beyond The C++ Standard Library - An ...
2. **算法与函数**:Boost包含各种算法,如迭代器算法(`boost::algorithm`)、元编程函数库(`boost::mpl`)以及函数对象和适配器(如`boost::bind`和`boost::lambda`)。这些工具极大地扩展了C++的标准库功能。 3...
通过深入理解Boost.Thread,你可以学习如何在不同操作系统上高效地利用多核处理器。 网络编程方面,Boost.Asio是一个强大的异步I/O库,支持TCP、UDP以及其他网络协议。Asio允许开发者编写高性能、可扩展的网络应用...
同时,理解Boost库中`Tuple`的实现原理,比如它的类型辅助类`boost::mpl::vector`和`boost::tuples::detail`,会对你编写自己的`Tuple`实现有所帮助。 总之,实现一个类似于Boost的`Tuple`不仅需要深入理解C++的...
1. **高质量代码**:Boost库的每个组件都经过了广泛的测试和审查,确保了代码的质量和可靠性。 2. **标准库前驱**:许多Boost库已被采纳进入C++标准库,如`shared_ptr`、`unique_ptr`、`variant`和`tuple`等。 3. **...
1. **泛型编程**:Boost库鼓励使用模板和泛型编程,提供了一系列如`boost::mpl`(元编程库)、`boost::function`和`boost::bind`等工具,使代码更加灵活和可重用。 2. **智能指针**:Boost库包含多种智能指针,如`...
#### Library1: Smart_ptr **Smart_ptr**库是Boost中最知名的库之一,提供了多种智能指针类型,旨在解决C++中资源管理的问题。智能指针能够自动管理其指向的对象的生命周期,避免内存泄漏等问题。 - **Scoped_ptr*...
Boost提供了多个库来支持这些技术,比如`boost::mpl`(Meta Programming Library)和`boost::fusion`,这些库可以帮助开发者在编译时进行类型和值的处理,从而实现高度灵活和高效的代码设计。 #### 数学及数字处理 ...
Boost库是模板元编程的先驱,其中的`Boost.MPL`(Meta-Programming Library)和`Boost.TypeTraits`是模板元编程的重要工具。TMP允许开发者在编译时进行计算,创建高度类型安全和高效代码。 2. **智能指针(Smart ...
- **Boost库概述**:Boost是一个免费且开源的跨平台C++库集合,旨在提供高质量的通用组件。 - **历史与发展**:自1995年以来不断发展,成为C++社区中最受尊敬的项目之一。 - **特性与优势**:包括但不限于类型安全、...
1. **智能指针**:Boost提供了一套完整的智能指针解决方案,如`boost::shared_ptr`、`boost::weak_ptr`和`boost::unique_ptr`,它们可以有效管理对象生命周期,避免内存泄漏。 2. **多线程支持**:Boost.Thread库...
1. **库分类**:Boost库包括了算法、容器、并发、数据结构、函数对象、I/O、迭代器、数学与数值计算、多态函数指针、智能指针、序列化、字符串处理、测试工具、类型转换、元编程等各类工具库。 2. **Boost.Date_...