|
@@ -77,6 +77,10 @@ struct PairHash {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+// Pair is zero-constructible if and only if both constrained types are zero-constructible.
|
|
|
+template <typename F, typename S>
|
|
|
+struct is_zero_constructible<Pair<F, S>> : std::conjunction<is_zero_constructible<F>, is_zero_constructible<S>> {};
|
|
|
+
|
|
|
template <typename K, typename V>
|
|
|
struct KeyValue {
|
|
|
const K key;
|
|
@@ -109,3 +113,7 @@ struct KeyValueSort {
|
|
|
return A.key < B.key;
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+// KeyValue is zero-constructible if and only if both constrained types are zero-constructible.
|
|
|
+template <typename K, typename V>
|
|
|
+struct is_zero_constructible<KeyValue<K, V>> : std::conjunction<is_zero_constructible<K>, is_zero_constructible<V>> {};
|