#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include "revng/ADT/KeyedObjectContainer.h" #include "revng/TupleTree/TupleLikeTraits.h" template concept TupleTreeCompatible = (KeyedObjectContainer or UpcastablePointerLike or TupleLike); template concept NotTupleTreeCompatible = not TupleTreeCompatible; template concept Verifiable = requires(const T &TT) { { TT.verify() } -> std::same_as; }; template concept TupleTreeCompatibleAndVerifiable = (TupleTreeCompatible and Verifiable);