70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
|
// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
|
||
|
// distribution is subject to the Boost Software License, Version 1.0. (See
|
||
|
// accompanying file LICENSE_1_0.txt or copy at
|
||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||
|
|
||
|
#ifndef DEFAULT_050329_HPP
|
||
|
# define DEFAULT_050329_HPP
|
||
|
|
||
|
# include <boost/detail/workaround.hpp>
|
||
|
|
||
|
namespace boost { namespace parameter { namespace aux {
|
||
|
|
||
|
// A wrapper for the default value passed by the user when resolving
|
||
|
// the value of the parameter with the given Keyword
|
||
|
template <class Keyword, class Value>
|
||
|
struct default_
|
||
|
{
|
||
|
default_(Value& x)
|
||
|
: value(x)
|
||
|
{}
|
||
|
|
||
|
Value& value;
|
||
|
};
|
||
|
|
||
|
//
|
||
|
// lazy_default --
|
||
|
//
|
||
|
// A wrapper for the default value computation function passed by
|
||
|
// the user when resolving the value of the parameter with the
|
||
|
// given keyword
|
||
|
//
|
||
|
# if BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
|
||
|
// These compilers need a little extra help with overload
|
||
|
// resolution; we have empty_arg_list's operator[] accept a base
|
||
|
// class to make that overload less preferable.
|
||
|
template <class KW, class DefaultComputer>
|
||
|
struct lazy_default_base
|
||
|
{
|
||
|
lazy_default_base(DefaultComputer const& x)
|
||
|
: compute_default(x)
|
||
|
{}
|
||
|
DefaultComputer const& compute_default;
|
||
|
};
|
||
|
|
||
|
template <class KW, class DefaultComputer>
|
||
|
struct lazy_default
|
||
|
: lazy_default_base<KW,DefaultComputer>
|
||
|
{
|
||
|
lazy_default(DefaultComputer const & x)
|
||
|
: lazy_default_base<KW,DefaultComputer>(x)
|
||
|
{}
|
||
|
};
|
||
|
# define BOOST_PARAMETER_lazy_default_fallback lazy_default_base
|
||
|
# else
|
||
|
template <class KW, class DefaultComputer>
|
||
|
struct lazy_default
|
||
|
{
|
||
|
lazy_default(const DefaultComputer& x)
|
||
|
: compute_default(x)
|
||
|
{}
|
||
|
DefaultComputer const& compute_default;
|
||
|
};
|
||
|
# define BOOST_PARAMETER_lazy_default_fallback lazy_default
|
||
|
# endif
|
||
|
|
||
|
}}} // namespace boost::parameter::aux
|
||
|
|
||
|
#endif // DEFAULT_050329_HPP
|
||
|
|