pt.c (convert_nontype_argument): Don't call decl_constant_value if we're converting to a reference type.

* pt.c (convert_nontype_argument): Don't call decl_constant_value
	if we're converting to a reference type.

From-SVN: r28224
This commit is contained in:
Mark Mitchell 1999-07-23 04:32:17 +00:00 committed by Mark Mitchell
parent 19699da404
commit 638dd8fc32
3 changed files with 10 additions and 4 deletions

View File

@ -1,5 +1,8 @@
1999-07-22 Mark Mitchell <mark@codesourcery.com>
* pt.c (convert_nontype_argument): Don't call decl_constant_value
if we're converting to a reference type.
* call.c (NEED_TEMPORARY_P): New macro.
(standard_conversion): Set it, for derived-to-base conversions.
(reference_related_p): New function.

View File

@ -2681,9 +2681,12 @@ convert_nontype_argument (type, expr)
--a pointer to member expressed as described in _expr.unary.op_. */
/* An integral constant-expression can include const variables
or enumerators. */
if (INTEGRAL_TYPE_P (expr_type) && TREE_READONLY_DECL_P (expr))
/* An integral constant-expression can include const variables or
enumerators. Simplify things by folding them to their values,
unless we're about to bind the declaration to a reference
parameter. */
if (INTEGRAL_TYPE_P (expr_type) && TREE_READONLY_DECL_P (expr)
&& TREE_CODE (type) != REFERENCE_TYPE)
expr = decl_constant_value (expr);
if (is_overloaded_fn (expr))

View File

@ -17,4 +17,4 @@ extern const int c;
X<c> z; // ok, c has external linkage
extern const int c = 3;
X<c> z_; // gets bogus error - using c as constant - XFAIL *-*-*
X<c> z_; // gets bogus error - using c as constant