* decl.c (grokdeclarator): Allow const and constexpr together.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@191144
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-09-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/54086
+ * decl.c (grokdeclarator): Allow const and constexpr together.
+
2012-08-31 Ollie Wild <aaw@google.com>
PR c++/54197
the object as `const'. */
if (constexpr_p && innermost_code != cdk_function)
{
- if (type_quals & TYPE_QUAL_CONST)
- error ("both %<const%> and %<constexpr%> cannot be used here");
if (type_quals & TYPE_QUAL_VOLATILE)
error ("both %<volatile%> and %<constexpr%> cannot be used here");
if (TREE_CODE (type) != REFERENCE_TYPE)
--- /dev/null
+// PR c++/54086
+// { dg-do compile { target c++11 } }
+
+static constexpr const char Data[] = {
+ 'D', 'A', 'T', 'A',
+};
+static constexpr const char *data_func() { return Data; }
// error: missing initializer
constexpr A1 a2; // { dg-error "uninitialized const" }
-// error: duplicate cv
-const constexpr A1 a3 = A1(); // { dg-error "both .const. and .constexpr. cannot" }
+const constexpr A1 a3 = A1();
volatile constexpr A1 a4 = A1(); // { dg-error "both .volatile. and .constexpr. cannot" }