для двух аргументов.
template<class X, class Y, class Op>
struct op_valid_impl
{
template<class U, class L, class R>
static auto test(int) -> decltype(std::declval<U>()(std::declval<L>(), std::declval<R>()),
void(), std::true_type());
template<class U, class L, class R>
static auto test(...) -> std::false_type;
using type = decltype(test<Op, X, Y>(0));
};
Подскажите, пожалуйста, зачем здесь void() ?
static auto test(int) -> decltype(std::declval<U>()(std::declval<L>(), std::declval<R>()),
void(), std::true_type());
Недавно в лекции для магистерского курса Владимиров рассказывал про объекты типа void.
Ну изложи кратко...
Обсуждают сегодня