summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp')
-rw-r--r--src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp b/src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp
new file mode 100644
index 000000000..fbce17094
--- /dev/null
+++ b/src/boost/libs/config/test/boost_has_vc6_mem_templ.ipp
@@ -0,0 +1,58 @@
+// (C) Copyright John Maddock 2001.
+// Use, modification and distribution are 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)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_MSVC6_MEMBER_TEMPLATES
+// TITLE: microsoft member templates
+// DESCRIPTION: Microsoft Visual C++ 6.0 has enough member
+// template idiosyncrasies (being polite) that
+// BOOST_NO_MEMBER_TEMPLATES is defined for this compiler.
+// BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow
+// compiler specific workarounds.
+#ifndef BOOST_NESTED_TEMPLATE
+#define BOOST_NESTED_TEMPLATE template
+#endif
+
+namespace boost_msvc6_member_templates{
+
+template <class T>
+struct foo
+{
+ template <class U>
+ struct nested
+ {
+ typedef foo<U> other;
+ };
+ template <class U>
+ void mfoo(const U&)
+ {
+ }
+};
+
+template <class T>
+void vc6_mem_test(T i)
+{
+ foo<double> f1;
+ typedef foo<T> ifoo;
+ f1.mfoo(i);
+ typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t;
+ typedef typename bound_t::other other;
+ other o;
+ (void)o;
+}
+
+int test()
+{
+ int i = 0;
+ vc6_mem_test(i);
+ return 0;
+}
+
+}
+
+
+
+