标准库提供了许多容器,它们有一个共同点:它们是同类的。也就是说,标准库中的容器只能存储一种类型的元素。 std::vector
Boost.Fusion 使创建异构容器成为可能。例如,您可以创建一个向量,其第一个元素是 int,第二个元素是字符串。此外,Boost.Fusion 提供了处理异构容器的算法。您可以将 Boost.Fusion 视为异构容器的标准库。
严格来说,从C++11开始,标准库就提供了一个异构容器,std::tuple。您可以对存储在元组中的值使用不同的类型。 Boost.Fusion 中的 boost:fusion::tuple 是类似的类型。虽然标准库没有提供更多,但元组只是 Boost.Fusion 的起点。
示例 50.1。处理融合元组
- #include <boost/fusion/tuple.hpp>
- #include <string>
- #include <iostream>
-
- using namespace boost::fusion;
-
- int main()
- {
- typedef tuple<int, std::string, bool, double> tuple_type;
- tuple_type t{10, "Boost", true, 3.14};
- std::cout << get<0>(t) << '\n';
- std::cout << get<1>(t) << '\n';
- std::cout <&l