I created a trait struct FnOnArg
to see if Fn can call on Arg
template<typename Fn, typename Arg, typename=void>
struct FnOnArg: std::false_type {};
template<typename Fn, typename Arg>
struct FnOnArg<Fn, Arg, std::void_t<decltype(std::declval<Fn>()(std::declval<Arg>()))>>: std::true_type {};
It can only work on Fn with one argument
I want to create FnOnArgs
like
template<typename Fn, typename... Args, typename=void>
struct FnOnArgs;
but variadic and default template argument both should be the last argument
Any workaround to achieve FnOnArgs
?