static

Description

The static_ adaptor is a static function adaptor that allows any default-constructible function object to be static-initialized. Functions initialized by static_ cannot be used in constexpr functions. If the function needs to be statically initialized and called in a constexpr context, then a constexpr constructor needs to be used rather than static_.

Synopsis

template<class F>
class static_;

Requirements

F must be:

Example

#include <boost/hof.hpp>
#include <cassert>
using namespace boost::hof;

// In C++ this class can't be static-initialized, because of the non-
// trivial default constructor.
struct times_function
{
    double factor;
    times_function() : factor(2)
    {}
    template<class T>
    T operator()(T x) const
    {
        return x*factor;
    }
};

static constexpr static_<times_function> times2 = {};

int main() {
    assert(6 == times2(3));
}