Comments
Patch
commit a4d190b1380fe956f7758994e7de27366dbcc0bb
Author: Jason Merrill <jason@redhat.com>
Date: Mon Jul 2 16:44:12 2012 -0400
PR c++/53816
* class.c (resolves_to_fixed_type_p): Check uses_template_parms
(current_function_decl) instead of processing_template_decl.
@@ -6479,7 +6479,11 @@ resolves_to_fixed_type_p (tree instance, int* nonnull)
int cdtorp = 0;
tree fixed;
- if (processing_template_decl)
+ /* processing_template_decl can be false in a template if we're in
+ fold_non_dependent_expr, but we still want to suppress this check. */
+ if (processing_template_decl
+ || (current_function_decl
+ && uses_template_parms (current_function_decl)))
{
/* In a template we only care about the type of the result. */
if (nonnull)
new file mode 100644
@@ -0,0 +1,15 @@
+// PR c++/53816
+
+template <typename T>
+struct S { int v () const; };
+template <typename T>
+struct V : public S<T> {};
+struct U
+{
+ V<int> v;
+ template<typename T>
+ struct W
+ {
+ W (U const &x) { V<int> const &v = x.v; v.v(); }
+ };
+};