diff options
| author | hachem <im@hachem.wtf> | 2026-09-19 13:47:08 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-19 13:47:08 +0200 |
| commit | d0ca03c84bcad3dc42fd173b0baf3a15e9b52f9b (patch) | |
| tree | 89fa494129849e23b1d760466e87ef6046cbfcb4 /examples/conditions.sfinae | |
| parent | a79c97e04562b171780a24cba2cb1a71acfa4bbb (diff) | |
feat: add conditionals
Diffstat (limited to 'examples/conditions.sfinae')
| -rw-r--r-- | examples/conditions.sfinae | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/conditions.sfinae b/examples/conditions.sfinae new file mode 100644 index 0000000..e930480 --- /dev/null +++ b/examples/conditions.sfinae @@ -0,0 +1,35 @@ +// a condition is not a condition until you say ::value + +// ::conditional_t picks a type. picking ::void and emitting it prints nothing at all +::emit< + ::conditional_t< + ::less<::difference<'B', 'A'>, ::difference<'A', 'A'>>::value, + ::decltype(::difference<'Z', 'A'>), + ::void + > +>::commit; + +// ::conditional does the same for values. this prints 9 +::emit< + ::decltype( + ::conditional< + ::is_same<::remove_cv_t<::int32_t>, ::int32_t>::value, + ::difference<'J', 'A'>, + ::difference<'A', 'A'> + > + ) +>::commit; + +// two arrays are the same type when their extents agree. this prints 1 +::emit< + ::decltype( + ::conditional< + ::is_same< + ::array<::byte, ::difference<'C', 'A'>>, + ::array<::int32_t, ::sum<::difference<'B', 'A'>, ::difference<'B', 'A'>>> + >::value, + ::difference<'B', 'A'>, + ::difference<'A', 'A'> + > + ) +>::commit; |
