From 6bb288bf2053ab74721e4b893022ec46a99afc77 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 30 Nov 2017 22:27:24 +0100 Subject: [PATCH] Library: search for a way to rebind to nested definitions ...automatically whenever those are present. Up to now, we hat that as base case, which limited usage to those cases where we already know such nested definitions are actually present --- src/lib/meta/value-type-binding.hpp | 6 +++++- tests/library/meta/value-type-binding-test.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib/meta/value-type-binding.hpp b/src/lib/meta/value-type-binding.hpp index a5ff19662..0d5a0c070 100644 --- a/src/lib/meta/value-type-binding.hpp +++ b/src/lib/meta/value-type-binding.hpp @@ -40,6 +40,8 @@ #include "lib/error.hpp" +#include "lib/meta/duck-detector.hpp" ////////TODO +#include "lib/meta/util.hpp" ////////TODO @@ -51,6 +53,8 @@ namespace std { namespace lib { namespace meta { + META_DETECT_NESTED (value_type); + /** * Type re-binding helper template for creating nested typedefs * for use by IterAdapter or similar "Lumiera Forward Iterators". @@ -104,7 +108,7 @@ namespace meta { * STL style type binding definitions themselves */ template - struct TypeBinding + struct TypeBinding> > { typedef typename TY::pointer pointer; typedef typename TY::reference reference; diff --git a/tests/library/meta/value-type-binding-test.cpp b/tests/library/meta/value-type-binding-test.cpp index 6f3b4a679..782918354 100644 --- a/tests/library/meta/value-type-binding-test.cpp +++ b/tests/library/meta/value-type-binding-test.cpp @@ -200,6 +200,12 @@ namespace test{ cout << showType::reference>() <::pointer>() <::value_type>() <::reference>() <::pointer>() <::value_type>() <::reference>() <::pointer>() <