OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Sep 2011 00:54:32 +0000 (00:54 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Sep 2011 00:54:32 +0000 (00:54 +0000)
2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50491
* semantics.c (potential_constant_expression_1): Handle USING_DECL.

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

PR c++/50491
* g++.dg/cpp0x/pr50491.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179109 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/pr50491.C [new file with mode: 0644]

index 8ec7a05..249cab6 100644 (file)
@@ -1,5 +1,10 @@
 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       PR c++/50491
+       * semantics.c (potential_constant_expression_1): Handle USING_DECL.
+
+2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
        PR c++/50371
        * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
 
index 150805f..0662b29 100644 (file)
@@ -7751,6 +7751,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
       /* We can see a FIELD_DECL in a pointer-to-member expression.  */
     case FIELD_DECL:
     case PARM_DECL:
+    case USING_DECL:
       return true;
 
     case AGGR_INIT_EXPR:
index d9410dd..c3aa2c1 100644 (file)
@@ -1,3 +1,8 @@
+2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/50491
+       * g++.dg/cpp0x/pr50491.C: New.
+
 2011-09-22  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR testsuite/50487
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr50491.C b/gcc/testsuite/g++.dg/cpp0x/pr50491.C
new file mode 100644 (file)
index 0000000..48e7a1f
--- /dev/null
@@ -0,0 +1,17 @@
+// { dg-options "-std=c++0x" }
+
+struct GrandParent {
+  void *get();
+};
+
+template<class OBJ>
+struct Parent : public GrandParent{
+};
+
+template<typename T>
+struct Child : public Parent<T> {
+  using GrandParent::get;
+  void Foo() {
+    void* ex = get();
+  }
+};