You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
69 lines
1.8 KiB
69 lines
1.8 KiB
// 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 |
|
|
|
|