|
|
|
@ -1420,14 +1420,14 @@ struct WithArgsAction { |
|
|
|
|
// providing a call operator because even with a particular set of arguments
|
|
|
|
|
// they don't have a fixed return type.
|
|
|
|
|
|
|
|
|
|
template <typename R, typename... Args, |
|
|
|
|
template < |
|
|
|
|
typename R, typename... Args, |
|
|
|
|
typename std::enable_if< |
|
|
|
|
std::is_convertible< |
|
|
|
|
InnerAction, |
|
|
|
|
// Unfortunately we can't use the InnerSignature alias here;
|
|
|
|
|
// MSVC complains about the I parameter pack not being
|
|
|
|
|
// expanded (error C3520) despite it being expanded in the
|
|
|
|
|
// type alias.
|
|
|
|
|
std::is_convertible<InnerAction, |
|
|
|
|
// Unfortunately we can't use the InnerSignature
|
|
|
|
|
// alias here; MSVC complains about the I
|
|
|
|
|
// parameter pack not being expanded (error C3520)
|
|
|
|
|
// despite it being expanded in the type alias.
|
|
|
|
|
// TupleElement is also an MSVC workaround.
|
|
|
|
|
// See its definition for details.
|
|
|
|
|
OnceAction<R(internal::TupleElement< |
|
|
|
@ -1447,14 +1447,14 @@ struct WithArgsAction { |
|
|
|
|
return OA{std::move(inner_action)}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename R, typename... Args, |
|
|
|
|
template < |
|
|
|
|
typename R, typename... Args, |
|
|
|
|
typename std::enable_if< |
|
|
|
|
std::is_convertible< |
|
|
|
|
const InnerAction&, |
|
|
|
|
// Unfortunately we can't use the InnerSignature alias here;
|
|
|
|
|
// MSVC complains about the I parameter pack not being
|
|
|
|
|
// expanded (error C3520) despite it being expanded in the
|
|
|
|
|
// type alias.
|
|
|
|
|
std::is_convertible<const InnerAction&, |
|
|
|
|
// Unfortunately we can't use the InnerSignature
|
|
|
|
|
// alias here; MSVC complains about the I
|
|
|
|
|
// parameter pack not being expanded (error C3520)
|
|
|
|
|
// despite it being expanded in the type alias.
|
|
|
|
|
// TupleElement is also an MSVC workaround.
|
|
|
|
|
// See its definition for details.
|
|
|
|
|
Action<R(internal::TupleElement< |
|
|
|
|