diff DEPENDENCIES/generic/include/boost/parameter/aux_/default.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/parameter/aux_/default.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,69 @@
+// 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
+