]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR c++/61556
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 18:31:53 +0000 (18:31 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 18:31:53 +0000 (18:31 +0000)
* call.c (build_over_call): Call build_this in template path.

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

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C [new file with mode: 0644]

index a992c87de85851da1a68ddac70657cde09c415fc..b4379542510f373d1e7371bcff1167afc56b6c7d 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61556
+       * call.c (build_over_call): Call build_this in template path.
+
 2014-06-19  Jason Merrill  <jason@redhat.com>
 
        PR c++/59296
index e147abdd083100b7a6b41b1a40f761db6e768507..da9143300496bfd7f184c2fe55b4925494f07196 100644 (file)
@@ -6896,7 +6896,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
 
          ++nargs;
          alcarray = XALLOCAVEC (tree, nargs);
-         alcarray[0] = first_arg;
+         alcarray[0] = build_this (first_arg);
          FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
            alcarray[ix + 1] = arg;
          argarray = alcarray;
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C
new file mode 100644 (file)
index 0000000..e835dbf
--- /dev/null
@@ -0,0 +1,32 @@
+// PR c++/61556
+// { dg-do compile { target c++11 } }
+
+class ValueType {
+public:
+    constexpr operator int() const {return m_ID;};
+    constexpr ValueType(const int v)
+        : m_ID(v) {}
+private:
+    int m_ID;
+};
+
+class ValueTypeEnum {
+public:
+    static constexpr ValueType doubleval = ValueType(1);
+};
+
+template <int format>
+class ValueTypeInfo {
+};
+
+template <typename Format>
+class FillFunctor {
+public:
+    FillFunctor() {
+        ValueTypeInfo<ValueTypeEnum::doubleval> v;
+    }
+};
+
+int main() {
+    ValueTypeInfo<ValueTypeEnum::doubleval> v;
+}