C++ Template Metaprogramming
Solutions to the exercises throughout the book
|
Solution to Exercise 5-6. More...
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/iterator_tags.hpp>
#include <boost/mpl/next_prior.hpp>
#include <boost/type_traits/is_array.hpp>
#include <boost/type_traits/is_same.hpp>
Go to the source code of this file.
Classes | |
struct | exercise_5_6::dimensions_tag |
A tag for tag-dispatched sequence metafunctions. More... | |
struct | exercise_5_6::dimensions< T > |
Represent the dimensions in an array type as a sequence of numbers. More... | |
struct | exercise_5_6::dimensions< T[N]> |
Basically a tuple where the "head" is the value, and the rest is accessed by "tail". More... | |
struct | exercise_5_6::dimensions_iterator< S > |
Define a (forward-only) iterator for our dimensions sequence. More... | |
struct | boost::mpl::begin_impl< exercise_5_6::dimensions_tag > |
Just wrap the sequence in an iterator. More... | |
struct | boost::mpl::begin_impl< exercise_5_6::dimensions_tag >::apply |
struct | boost::mpl::end_impl< exercise_5_6::dimensions_tag > |
The end is a boost::mpl::void_ type. More... | |
struct | boost::mpl::end_impl< exercise_5_6::dimensions_tag >::apply |
struct | boost::mpl::deref< exercise_5_6::dimensions_iterator< S > > |
The iterator just contains a subset of the underlying sequence. More... | |
struct | boost::mpl::next< exercise_5_6::dimensions_iterator< S > > |
The sequence itself defines "next". More... | |
Namespaces | |
namespace | exercise_5_6 |
Encapsulate solution for Exercise 5-6. | |
namespace | boost |
Exists to inject functionality into the Boost namespace. | |
namespace | boost::mpl |
Exists to inject functionality into the Boost MPL namespace. | |
Solution to Exercise 5-6.
Definition in file exercise-5-6.hpp.