diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index e77c48e463e..a95ce6eb3da 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -21519,7 +21519,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) if (DECL_TEMPLATE_PARM_P (t)) RETURN (RECUR (DECL_INITIAL (t))); - if (!uses_template_parms (DECL_CONTEXT (t))) + if (!args || !uses_template_parms (DECL_CONTEXT (t))) RETURN (t); /* Unfortunately, we cannot just call lookup_name here. diff --git a/gcc/testsuite/g++.dg/template/non-dependent33.C b/gcc/testsuite/g++.dg/template/non-dependent33.C new file mode 100644 index 00000000000..ea5b41fba93 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/non-dependent33.C @@ -0,0 +1,13 @@ +// PR c++/115139 +// { dg-do compile { target c++11 } } + +template +class A { + enum E { + e1 = 1, + e2 = 2, + e3 = e1 | e2, + }; +}; + +template class A;