C++ Template Metaprogramming
Solutions to the exercises throughout the book
Loading...
Searching...
No Matches

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.
 

Detailed Description

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
{ };