|
C++ Template Metaprogramming
Solutions to the exercises throughout the book
|
Weed out compile-time inefficiencies. More...
Files | |
| file | exercise-4-3.hpp |
| Solution to Exercise 4-3. | |
Namespaces | |
| namespace | test_4_3 |
| Tests functionality from Exercise 4-3. | |
| namespace | exercise_4_3 |
| Encapsulate solution for Exercise 4-3. | |
Weed out compile-time inefficiencies.
4-3. Eliminate the unnecessary instantiations in the following code snippets:
1:
template <typename N, typename Predicate>
struct next_if
: mpl::if_<
typename mpl::apply<Predicate,N>::type,
typename mpl::next<N>::type,
N
> { };
2:
template <typename N1, typename N2>
struct formula
: mpl::if_<
mpl::not_equal_to<N1,N2>,
typename mpl::if_<
mpl::greater<N1,N2>,
typename mpl::minus<N1,N2>::type,
N1
>::type,
typename mpl::plus<
N1,
typename mpl::multiplies< N1, mpl::int_<2> >::type
>::type
>::type
{ };