70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // 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 | ||
|  | 
 |