Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <type_traits>
- using std::is_callable_v;
- template <typename Fn, typename A> constexpr auto bind(Fn fn, A &&a) noexcept {
- return [fn, a](auto &&... args) { return fn(a, args...); };
- }
- int main() {
- constexpr auto b0 = bind([]() {}, 4);
- constexpr auto b2 = bind([](int, int) {}, 4);
- // OK.
- static_assert(is_callable_v<decltype(b2)(int)>);
- // FAILING.
- static_assert(!is_callable_v<decltype(b0)()>);
- static_assert(!is_callable_v<decltype(b2)()>);
- static_assert(!is_callable_v<decltype(b2)(int, int)>);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement