|
halcheck 1.0
|
Determines if a type supports generating arbitrary values. More...
#include <arbitrary.hpp>
Determines if a type supports generating arbitrary values.
| T | The type of value to query. |
The type T satisfies is_arbitrary if and only if it is not a reference type and the expression arbitrary(gen::tag<T>(), lib::atom()) returns a value convertible to type T. Note that, by default, this holds for the following cases:
T is lib::monostateT is boolstd::is_integral<T>() holds.std::is_floating_point<T>() holds.T is std::pair<U, V>, where gen::is_arbitrary<U>() and gen::is_arbitrary<V>() holdT is std::tuple<Args...>, where gen::is_arbitrary<U>() holds for all U in Args...T is lib::optional<U>, where gen::is_arbitrary<U>() holdsT is std::variant<Args...>, where gen::is_arbitrary<U>() holds for all U in Args...lib::is_insertable_range<T>() and gen::is_arbitrary<lib::range_value_t<Container>>() hold