C++ Template Metaprogramming
Solutions to the exercises throughout the book
Loading...
Searching...
No Matches
exercise-5-7.hpp File Reference

Solution to Exercise 5-7. More...

#include "exercise-5-6.hpp"
#include <boost/mpl/pop_back.hpp>
#include <boost/mpl/push_back.hpp>

Go to the source code of this file.

Classes

struct  exercise_5_7::dimensions_b_tag
 A tag for tag-dispatched sequence metafunctions. More...
 
struct  exercise_5_7::dimensions_b_iterator< S >
 Define a bi-directional iterator for our dimensions_b sequence. More...
 
struct  exercise_5_7::dimensions_b_impl< T, Next >
 Implement the dimensions_b sequence. More...
 
struct  exercise_5_7::dimensions_b_impl< T[N], Next >
 Descend through the T types, removing an array each time. More...
 
struct  exercise_5_7::dimensions_b< T >
 Represent the dimensions in an array type as a sequence of numbers. More...
 
struct  exercise_5_7::begin_impl_traversal< S, S_Prev >
 begin_impl_traversal walks the list to find the beginning More...
 
struct  exercise_5_7::begin_impl_traversal< S, boost::mpl::void_ >
 We've found the beginning. More...
 
struct  boost::mpl::begin_impl< exercise_5_7::dimensions_b_tag >
 Wrap an iterator around the front of the sequence. More...
 
struct  boost::mpl::begin_impl< exercise_5_7::dimensions_b_tag >::apply
 
struct  boost::mpl::end_impl< exercise_5_7::dimensions_b_tag >
 Wrap an iterator around boost::mpl::void_. More...
 
struct  boost::mpl::end_impl< exercise_5_7::dimensions_b_tag >::apply
 
struct  boost::mpl::pop_back_impl< exercise_5_7::dimensions_b_tag >
 Popping from the back just means drop one array dimension. More...
 
struct  boost::mpl::pop_back_impl< exercise_5_7::dimensions_b_tag >::apply< exercise_5_7::dimensions_b< T[N]> >
 
struct  boost::mpl::push_back_impl< exercise_5_7::dimensions_b_tag >
 Just convert the input to an integer, and add to the array dimension. More...
 
struct  boost::mpl::push_back_impl< exercise_5_7::dimensions_b_tag >::apply_num
 
struct  boost::mpl::push_back_impl< exercise_5_7::dimensions_b_tag >::apply_num< exercise_5_7::dimensions_b< T >, N >
 
struct  boost::mpl::push_back_impl< exercise_5_7::dimensions_b_tag >::apply
 Just convert whatever we get into a value... More...
 
struct  boost::mpl::deref< exercise_5_7::dimensions_b_iterator< S > >
 The sequence IS its identity, really. More...
 
struct  boost::mpl::next< exercise_5_7::dimensions_b_iterator< S > >
 Next is defined by the sequence. More...
 
struct  boost::mpl::prior< exercise_5_7::dimensions_b_iterator< S > >
 Prev is defined by the sequence. More...
 

Namespaces

namespace  exercise_5_7
 Encapsulate solution for Exercise 5-7.
 
namespace  boost
 Exists to inject functionality into the Boost namespace.
 
namespace  boost::mpl
 Exists to inject functionality into the Boost MPL namespace.
 

Detailed Description

Solution to Exercise 5-7.

Author
Matt Bisson

Definition in file exercise-5-7.hpp.