]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/50837 ([c++0x] static_assert and constexpr in template class)
authorPaolo Carlini <paolo@gcc.gnu.org>
Thu, 10 Nov 2011 02:27:16 +0000 (02:27 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 10 Nov 2011 02:27:16 +0000 (02:27 +0000)
/cp
2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50837
* pt.c (tsubst_copy_and_build) [IDENTIFIER_NODE]: In C++11 mode
pass allow_non_integral_constant_expression_p = true to
finish_id_expression.

/testsuite
2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50837
* g++.dg/cpp0x/static_assert5.C: New.
* g++.dg/template/nontype13.C: Tweak.

From-SVN: r181248

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/static_assert5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/nontype13.C

index 406f77c72665ba1366d75420c9cde7388a4c34f3..33bfa33403df96bc99f95d50f8931a1d674bcdf3 100644 (file)
@@ -1,3 +1,10 @@
+2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/50837
+       * pt.c (tsubst_copy_and_build) [IDENTIFIER_NODE]: In C++11 mode
+       pass allow_non_integral_constant_expression_p = true to
+       finish_id_expression.
+
 2011-11-09  Jason Merrill  <jason@redhat.com>
 
        PR c++/50972
index 55eba5a0910a59a39b042e4e85292c237868458f..da5497ea5c753cac7da5fa614fba6d0f5cb4865a 100644 (file)
@@ -13233,7 +13233,7 @@ tsubst_copy_and_build (tree t,
        decl = finish_id_expression (t, decl, NULL_TREE,
                                     &idk,
                                     integral_constant_expression_p,
-                                    /*allow_non_integral_constant_expression_p=*/false,
+          /*allow_non_integral_constant_expression_p=*/(cxx_dialect >= cxx0x),
                                     &non_integral_constant_expression_p,
                                     /*template_p=*/false,
                                     /*done=*/true,
index 0f71e6773a3c18cb5c4529ff9974b36b65ca1f51..c5004a413909fae6a232f0c354121f575be18744 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/50837
+       * g++.dg/cpp0x/static_assert5.C: New.
+       * g++.dg/template/nontype13.C: Tweak.
+
 2011-11-09  Jason Merrill  <jason@redhat.com>
 
        PR c++/50972
@@ -25,7 +31,7 @@
 
 2011-11-09  Patrick Marlier  <patrick.marlier@gmail.com>
 
-       * gcc.dg/tm/memopt-1.c:  Adjust regexp. 
+       * gcc.dg/tm/memopt-1.c:  Adjust regexp.
 
 2011-11-09  Jason Merrill  <jason@redhat.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert5.C b/gcc/testsuite/g++.dg/cpp0x/static_assert5.C
new file mode 100644 (file)
index 0000000..b918796
--- /dev/null
@@ -0,0 +1,21 @@
+// PR c++/50837
+// { dg-options "-std=c++0x" }
+
+template<class T>
+struct z
+{
+  static constexpr bool test_constexpr()
+  {
+    return true;
+  }
+
+  static void test()
+  {
+    static_assert(test_constexpr(), "test1");
+  }
+};
+
+int main()
+{
+  z<int>::test();
+}
index 4b3e862ba8003e4d1fbeb14aa7115c9d86b430b9..d604da9445416b6d87e71a7e3e0b7c04b3657694 100644 (file)
@@ -11,7 +11,7 @@ struct Dummy
   template<bool B>
   void tester()
   {
-    bar<evil>()(); // { dg-error "constant" }
+    bar<evil>()(); // { dg-error "constant|template" }
   }
   template<bool B>
   struct bar