re PR c++/77446 (Suspicious "non-constant condition for static assertion" error)
authorPaolo Carlini <paolo.carlini@oracle.com>
Thu, 20 Oct 2016 08:15:49 +0000 (08:15 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 20 Oct 2016 08:15:49 +0000 (08:15 +0000)
2016-10-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/77446
* g++.dg/cpp1y/pr77446.C: New.

From-SVN: r241361

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1y/pr77446.C [new file with mode: 0644]

index 152b1b26bbaf673c284889c73ade64c207d56e43..b161d5cfcb5265bee96b64ce27f1b2be66af392b 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/77446
+       * g++.dg/cpp1y/pr77446.C: New.
+
 2016-10-20  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
 
        PR tree-optimization/53979
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77446.C b/gcc/testsuite/g++.dg/cpp1y/pr77446.C
new file mode 100644 (file)
index 0000000..f7c6eaf
--- /dev/null
@@ -0,0 +1,23 @@
+// PR c++/77446
+// { dg-do compile { target c++14 } }
+
+struct inner {
+  int  field_a = 0;
+  bool field_b = false;
+
+  explicit constexpr inner(const int &arg_field_a) noexcept
+    : field_a{ arg_field_a } {}
+};
+
+struct outer {
+  inner the_inner = inner{ 0 };
+
+  constexpr outer() noexcept = default;
+  constexpr int set_inner(const inner &arg_inner) {
+    the_inner = arg_inner;
+    return 0;
+  }
+};
+
+constexpr inner another_inner{ 1 };
+static_assert( outer{}.set_inner( another_inner ) == 0,  "" );