// // macro.h // iterator // // Created by Sam Jaffe on 4/1/23. // Copyright © 2023 Sam Jaffe. All rights reserved. // #ifndef _ITERATOR_MACRO_H #define _ITERATOR_MACRO_H #define FWD(x) std::forward(x) #define REQUIRES_T(trait, rval, ...) std::enable_if_t #define REQUIRES(trait) typename = REQUIRES_T(trait, void) #define SFINAE(trait) template #define VAL(X) std::declval() #define DEREF_TYPE(X) decltype(*VAL(X)) #define TYPE(X, EXPR) decltype(VAL(X).EXPR) #define EXISTS(EXPR) std::void_t #endif