re PR c++/12093 (inconstitent error with templates/non-templates)

2003-08-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/12093
	* pt.c (build_non_dependent_expr): Do not build a
	NON_DEPENDENT_EXPR for a STRING_CST.

2003-08-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/12093
	* g++.dg/template/non-dependent4.C: New test.

From-SVN: r70941
This commit is contained in:
Mark Mitchell 2003-08-30 01:42:48 +00:00 committed by Mark Mitchell
parent c2096ef8a3
commit 7433e6d470
4 changed files with 22 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2003-08-29 Mark Mitchell <mark@codesourcery.com>
PR c++/12093
* pt.c (build_non_dependent_expr): Do not build a
NON_DEPENDENT_EXPR for a STRING_CST.
PR c++/11928
* search.c (add_conversions): Avoid adding two conversion
operators for the same type.

View File

@ -11806,6 +11806,11 @@ build_non_dependent_expr (tree expr)
types. */
if (TREE_CODE (expr) == OVERLOAD)
return expr;
/* Preserve string constants; conversions from string constants to
"char *" are allowed, even though normally a "const char *"
cannot be used to initialize a "char *". */
if (TREE_CODE (expr) == STRING_CST)
return expr;
if (TREE_CODE (expr) == COND_EXPR)
return build (COND_EXPR,

View File

@ -1,5 +1,8 @@
2003-08-29 Mark Mitchell <mark@codesourcery.com>
PR c++/12093
* g++.dg/template/non-dependent4.C: New test.
PR c++/11928
* g++.dg/inherit/conv1.C: New test.

View File

@ -0,0 +1,10 @@
// { dg-options "" }
template<int X> class c;
template<int X, int Y> int test(c<X ? : Y>&);
void test(c<2>*c2) {
test<0, 2>(*c2);
}