summaryrefslogtreecommitdiff
path: root/boost/fusion/adapted/adt/detail/extension.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/adapted/adt/detail/extension.hpp')
-rw-r--r--boost/fusion/adapted/adt/detail/extension.hpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/boost/fusion/adapted/adt/detail/extension.hpp b/boost/fusion/adapted/adt/detail/extension.hpp
index 50c40cf34e..2f4db4dd09 100644
--- a/boost/fusion/adapted/adt/detail/extension.hpp
+++ b/boost/fusion/adapted/adt/detail/extension.hpp
@@ -12,13 +12,28 @@
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
+#include <boost/fusion/support/as_const.hpp>
+#include <boost/fusion/adapted/struct/detail/extension.hpp>
-namespace boost { namespace fusion { namespace detail
-{
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
template <typename T, typename Dummy>
struct get_identity
: remove_const<typename remove_reference<T>::type>
{};
-}}}
+ }
+
+ namespace extension
+ {
+ // Overload as_const() to unwrap adt_attribute_proxy.
+ template <typename T, int N, bool Const>
+ typename adt_attribute_proxy<T, N, Const>::type as_const(const adt_attribute_proxy<T, N, Const>& proxy)
+ {
+ return proxy.get();
+ }
+ }
+}}
#endif