2012-01-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51225
* typeck2.c (store_init_value): Within a template guard
cxx_constant_value with require_potential_constant_expression.
* pt.c (convert_nontype_argument): Likewise.
/testsuite
2012-01-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51225
* g++.dg/cpp0x/pr51225.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183286
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51225
+ * typeck2.c (store_init_value): Within a template guard
+ cxx_constant_value with require_potential_constant_expression.
+ * pt.c (convert_nontype_argument): Likewise.
+
2012-01-16 Jakub Jelinek <jakub@redhat.com>
PR c++/51854
if (complain & tf_error)
{
int errs = errorcount, warns = warningcount;
+ if (processing_template_decl
+ && !require_potential_constant_expression (expr))
+ return NULL_TREE;
expr = cxx_constant_value (expr);
if (errorcount > errs || warningcount > warns)
inform (EXPR_LOC_OR_HERE (expr),
value = fold_non_dependent_expr (value);
value = maybe_constant_init (value);
if (DECL_DECLARED_CONSTEXPR_P (decl))
- /* Diagnose a non-constant initializer for constexpr. */
- value = cxx_constant_value (value);
+ {
+ /* Diagnose a non-constant initializer for constexpr. */
+ if (processing_template_decl
+ && !require_potential_constant_expression (value))
+ value = error_mark_node;
+ else
+ value = cxx_constant_value (value);
+ }
const_init = (reduced_constant_expression_p (value)
|| error_operand_p (value));
DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = const_init;
+2012-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51225
+ * g++.dg/cpp0x/pr51225.C: New.
+
2012-01-17 Ian Lance Taylor <iant@google.com>
PR go/50656
--- /dev/null
+// PR c++/51225
+// { dg-options "-std=c++0x" }
+
+template<int> struct A {};
+
+template<typename> void foo()
+{
+ A<int(x)> a; // { dg-error "not declared|invalid type" }
+}
+
+template<typename> struct bar
+{
+ static constexpr A<1> b = A<1>(x); // { dg-error "not declared" }
+};