cp/
PR c++/78765
* pt.c (convert_nontype_argument): Don't try and see if integral
or enum expressions are constants prematurely.
testsuite/
PR c++/78765
* g++.dg/cpp0x/pr78765.C: New.
From-SVN: r244101
+2017-01-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/78765
+ * pt.c (convert_nontype_argument): Don't try and see if integral
+ or enum expressions are constants prematurely.
+
2017-01-04 Marek Polacek <polacek@redhat.com>
PR c++/64767
to leave it in that form rather than lower it to a
CONSTRUCTOR. */;
else if (INTEGRAL_OR_ENUMERATION_TYPE_P (type))
- expr = maybe_constant_value (expr);
+ /* Constant value checking is done later with type conversion. */;
else if (cxx_dialect >= cxx1z)
{
if (TREE_CODE (type) != REFERENCE_TYPE)
+2017-01-05 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/78765
+ * g++.dg/cpp0x/pr78765.C: New.
+
2017-01-05 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/memcpy-2.c: New test.
--- /dev/null
+// PR c++/78765
+// { dg-do compile { target c++11 } }
+
+// ICE with failed constexpr object and member fn call
+
+struct ValueType {
+ constexpr operator int() const {return field;}
+ int field;
+};
+
+static constexpr ValueType var = 0; // { dg-error "conversion" }
+
+template <int> class ValueTypeInfo;
+
+ValueTypeInfo<var> x;