re PR c++/70543 (wrong non-const error for enable_if and constexpr function)

PR c++/70543

	* pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
	initializer also makes the variable value-dependent.

From-SVN: r234990
This commit is contained in:
Jason Merrill 2016-04-14 16:14:44 -04:00 committed by Jason Merrill
parent 3ae9a8b765
commit d25a101fe7
3 changed files with 22 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2016-04-14 Jason Merrill <jason@redhat.com>
PR c++/70543
* pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
initializer also makes the variable value-dependent.
PR c++/70648
* constexpr.c (cxx_eval_store_expression): Also copy
CONSTRUCTOR_NO_IMPLICIT_ZERO.

View File

@ -22670,6 +22670,7 @@ value_dependent_expression_p (tree expression)
&& (TREE_CODE (DECL_INITIAL (expression)) == TREE_LIST
/* cp_finish_decl doesn't fold reference initializers. */
|| TREE_CODE (TREE_TYPE (expression)) == REFERENCE_TYPE
|| type_dependent_expression_p (DECL_INITIAL (expression))
|| value_dependent_expression_p (DECL_INITIAL (expression))))
return true;
return false;

View File

@ -0,0 +1,17 @@
// PR c++/70543
// { dg-do compile { target c++11 } }
template <typename>
struct X
{
template <unsigned int = 0>
static constexpr int
calc (void)
{
return 0;
}
static constexpr unsigned int value = calc ();
char foo[value];
};