...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
set is an Associative Sequence of heteregenous typed data elements. Type identity is used to impose an equivalence relation on keys. The element's type is its key. A set may contain at most one element for each key. Membership testing and element key lookup has constant runtime complexity (see Overloaded Functions).
#include <boost/fusion/container/set.hpp> #include <boost/fusion/include/set.hpp> #include <boost/fusion/container/set/set_fwd.hpp> #include <boost/fusion/include/set_fwd.hpp>
template < typename T0 = unspecified , typename T1 = unspecified , typename T2 = unspecified ... , typename TN = unspecified > struct set;
The variadic class interface accepts 0
to FUSION_MAX_SET_SIZE
elements,
where FUSION_MAX_SET_SIZE
is a user definable predefined maximum that defaults to 10
.
Example:
set<int, char, double>
You may define the preprocessor constant FUSION_MAX_SET_SIZE
before including any Fusion header to change the default. Example:
#define FUSION_MAX_SET_SIZE 20
Parameter |
Description |
Default |
---|---|---|
|
Element types |
unspecified-type |
Notation
S
A set
type
s
An instance of set
e0
...en
Heterogeneous values
fs
Semantics of an expression is defined only where it differs from, or is not defined in Random Access Sequence and Associative Sequence.
Expression |
Semantics |
---|---|
|
Creates a set with default constructed elements. |
|
Creates a set with elements |
|
Copy constructs a set from a Forward
Sequence |
|
Assigns to a set, |
typedef set<int, float> S; S s(12, 5.5f); std::cout <<at_key
<int>(s) << std::endl; std::cout <<at_key
<float>(s) << std::endl; std::cout <<result_of::has_key
<S, double>::value << std::endl;