Hi
The following patch fixes an issue in template template parameter
implementation that does not conform to the C++ standard. It's
about how template template parameter and argument matching when
the argument (the class template) is declared with default
arguments. Previously, we allow code like:
#include <vector>
template <template <class> class TT> class C {};
C<std::vector> c;
despite the `vector' class template declared with two parameters,
one with default argument std::allocator<T>. This is now
consider non-standard compliance by core issue 150. This behavior
is fixed by the patch below.
However, this new behavior makes template template parameter
feature rather useless when used together with standard C++ library
classes. So an option `-fweak-template-templates' is also
introduced to weaken the parameter/argument matching rule to
allow the old behavior.