SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::utils::dependencies::SnapshotPolicyFor Concept Reference

#include <snapshot.hpp>

Concept definition

template<typename PolicyT, typename ValueT>
concept serif::utils::dependencies::SnapshotPolicyFor = requires(const PolicyT& policy, const ValueT& value) {
policy.capture(value);
requires std::is_object_v<decltype(policy.capture(value))>;
requires std::move_constructible<decltype(policy.capture(value))>;
{ policy.matches(std::declval<const decltype(policy.capture(value))&>(), value) } -> std::convertible_to<bool>;
} && (!requires(const PolicyT& policy, const ValueT& value) { policy.identity(value); } ||
requires(const PolicyT& policy, const ValueT& value) { { policy.identity(value) } -> std::convertible_to<const void*>; })