commit 29189e48dc7a62ff6a3a67984dbc64f4ada72862
Author: Jason Merrill <jason@redhat.com>
Date: Tue Feb 12 12:56:52 2013 -0500
PR c++/56285
* method.c (add_one_base_init): Handle base constructor
taking rvalue reference parm.
@@ -500,7 +500,8 @@ add_one_base_init (tree binfo, tree parm, bool move_p, tree inh,
for (; parm; parm = DECL_CHAIN (parm))
{
tree exp = convert_from_reference (parm);
- if (TREE_CODE (TREE_TYPE (parm)) != REFERENCE_TYPE)
+ if (TREE_CODE (TREE_TYPE (parm)) != REFERENCE_TYPE
+ || TYPE_REF_IS_RVALUE (TREE_TYPE (parm)))
exp = move (exp);
*p = build_tree_list (NULL_TREE, exp);
p = &TREE_CHAIN (*p);
new file mode 100644
@@ -0,0 +1,15 @@
+// PR c++/56285
+// { dg-options -std=c++11 }
+
+struct foo {
+ explicit foo(int&&) {}
+};
+
+struct bar: private foo {
+ using foo::foo;
+};
+
+int main()
+{
+ bar b { 42 };
+}