Some nodes create or use messages that are composites of other messages. The flow::tuple template class is included as part of flow to support this. Multiport nodes use tuples to manage their ports. These include join_node, multifunction_node, split_node, indexer_node and composite_node. Multiport nodes that send or receive tuples are join_node and split_node.
The tuple class is part of the C++11 standard, and earlier implementations of the Standard Library may have a tuple class. If std::tuple is part of the Standard Library, then flow::tuple is typedefed to std::tuple.
If the Standard Library does not contain tuple, an implementation is used that supports a subset of std::tuple's functionality:
- construction, copy construction and destruction,
- get<I>(tuple) (the i-th element of tuple, starting from zero),
- tuple_element<I,T>::type (the type of the i-th element of tuple type T),
- tuple_size<T>::value (the number of elements of the tuple type T),
Prior releases of flow injected flow's implementation of tuple into the std:: namespace. Users should change flow-specific references to std::tuple to flow::tuple to ensure compatibility with compilers that do not implement std::tuple as part of the Standard Library.