Я хочу проверить, может ли лямбда callable
вызываться с конкретными аргументами с помощью Boost.Hana. Компилятор жалуется, что callable
ожидает 0 аргументов, но 1 был предоставлен. Разве if_
не время компиляции, если оно компилируется в зависимости от условия is_callable
?
Может быть, у кого-то есть идея, как заставить код работать.
#include <boost/hana.hpp>
int main(){
namespace bh = boost::hana;
auto is_callable = bh::is_valid([](auto&& callable, auto&& args) -> decltype(bh::unpack(args, callable)){});
auto callable = [](){};
auto arg = 1;
auto args = bh::make_tuple(arg);
bh::if_(is_callable(callable, args),
[arg](auto callable){ callable(arg);},
[](auto callable){})(callable);
return 0;
}