Author: sebor
Date: Fri Mar 16 16:50:03 2007
New Revision: 519184
URL: http://svn.apache.org/viewvc?view=rev&rev=519184
Log:
2007-03-16 Martin Sebor <[EMAIL PROTECTED]>
* INSTANTIATE_DEFAULT_ARGS.cpp: Exercised the ability to explicitly
instantiate class templates whose member functions declare default
arguments referring to static member functions of the template
parameter that aren't declared (or well-formed) for the argument
used in the instantiation directive. Reveals compiler bugs such as
IBM XLC++ 8.0 STDCXX-363.
Modified:
incubator/stdcxx/trunk/etc/config/src/INSTANTIATE_DEFAULT_ARGS.cpp
Modified: incubator/stdcxx/trunk/etc/config/src/INSTANTIATE_DEFAULT_ARGS.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/src/INSTANTIATE_DEFAULT_ARGS.cpp?view=diff&rev=519184&r1=519183&r2=519184
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/INSTANTIATE_DEFAULT_ARGS.cpp
(original)
+++ incubator/stdcxx/trunk/etc/config/src/INSTANTIATE_DEFAULT_ARGS.cpp Fri Mar
16 16:50:03 2007
@@ -6,11 +6,19 @@
template <class T>
struct A
{
+ // must be able to use inaccessible members
void foo (const T& = T ()) { }
+
+ // must be able to use non-existent members
+ void bar (const T& = T::foobar ()) { }
};
+template <class T>
+void A<T>::bar (const T&) { }
+
struct B
{
+ // no foobar() declared
private:
B () { }
};