39template<
typename nng_value_t>
40concept nng_value_c = std::same_as<nng_value_t, nng_duration> ||
41 std::same_as<nng_value_t, nng_sockaddr> ||
42 std::same_as<nng_value_t, const char*>;
44template<
typename nng_t>
46 std::same_as<nng_t, nng_socket> || std::same_as<nng_t, nng_ctx> ||
47 std::same_as<nng_t, nng_listener> || std::same_as<nng_t, nng_dialer>;
49template<
typename nng_t>
53template<
typename nng_t>
55 std::same_as<nng_t, nng_aio*>;
57template<
typename u
int_t>
59 std::same_as<uint_t, uint16_t> || std::same_as<uint_t, uint32_t> ||
60 std::same_as<uint_t, uint64_t>;
62template<
typename value_t>
64 std::move_constructible<value_t> && !std::copy_constructible<value_t>;
66template<
typename value_t>
68 std::is_move_assignable_v<value_t> && !std::is_copy_assignable_v<value_t>;
70template<
typename value_t>