static¶
Header¶
#include <boost/hof/static.hpp>
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_;
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));
}




