Skip to content

Commit c8c6591

Browse files
committed
More perfect forward
1 parent f9cc695 commit c8c6591

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

include/pybind11/detail/init.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -257,15 +257,15 @@ struct alias_constructor {
257257
typename... Extra,
258258
enable_if_t<Class::has_alias && std::is_constructible<Alias<Class>, Args...>::value, int>
259259
= 0>
260-
static void execute(Class &cl, const Extra &...extra) {
260+
static void execute(Class &cl, Extra &&...extra) {
261261
cl.def(
262262
"__init__",
263263
[](value_and_holder &v_h, Args... args) {
264264
v_h.value_ptr()
265265
= construct_or_initialize<Alias<Class>>(std::forward<Args>(args)...);
266266
},
267267
is_new_style_constructor(),
268-
extra...);
268+
std::forward<Extra>(extra)...);
269269
}
270270
};
271271

include/pybind11/pybind11.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ class cpp_function : public function {
110110
// NOLINTNEXTLINE(google-explicit-constructor)
111111
cpp_function(std::nullptr_t) {}
112112
cpp_function(std::nullptr_t, const is_setter &) {}
113+
cpp_function(std::nullptr_t, is_setter &&) {}
113114

114115
/// Construct a cpp_function from a vanilla function pointer
115116
template <typename Return, typename... Args, typename... Extra>
@@ -123,9 +124,9 @@ class cpp_function : public function {
123124
typename... Extra,
124125
typename = detail::enable_if_t<detail::is_lambda<Func>::value>>
125126
// NOLINTNEXTLINE(google-explicit-constructor)
126-
cpp_function(Func &&f, const Extra &...extra) {
127+
cpp_function(Func &&f, Extra &&...extra) {
127128
initialize(
128-
std::forward<Func>(f), (detail::function_signature_t<Func> *) nullptr, extra...);
129+
std::forward<Func>(f), (detail::function_signature_t<Func> *) nullptr, std::forward<Extra>(extra)...);
129130
}
130131

131132
/// Construct a cpp_function from a class method (non-const, no ref-qualifier)

0 commit comments

Comments
 (0)