JH-Toolkit v1.4.1
An engineering-oriented C++20 toolkit with duck-typed concepts, static design, async coroutines, and semantic containers — header-only, RTTI-free, and concurrency-friendly.
Loading...
Searching...
No Matches
jh::concepts::pair_like_for Concept Reference

Checks whether a type P is a 2-element tuple-like whose element types exactly match K and V (after remove_cvref). More...

#include <jh/conceptual/tuple_like.h>

Concept definition

template<typename P, typename K, typename V>
concept pair_like_for =
(std::tuple_size_v<std::remove_cvref_t<P>> == 2) && requires(P &&p) {
requires std::same_as<
std::remove_cvref_t<K>,
std::remove_cvref_t<decltype(get<0>(p))>
>;
requires std::same_as<
std::remove_cvref_t<V>,
std::remove_cvref_t<decltype(get<1>(p))>
>;
}
Checks whether a type P is a 2-element tuple-like whose element types exactly match K and V (after re...
Definition tuple_like.h:164
Concept recognizing tuple-like types.
Definition tuple_like.h:142

Detailed Description

Checks whether a type P is a 2-element tuple-like whose element types exactly match K and V (after remove_cvref).

Accepts any tuple-like type with tuple_size == 2. Both ADL get<0>(p) and get<1>(p) must yield values whose remove_cvref_t types are exactly K and V, with no implicit conversions allowed.

Template Parameters
PThe candidate pair-like type.
KThe expected key type.
VThe expected value type.