std::experimental::reflect::Object
Von cppreference.com
< cpp | experimental | reflect
| Definiert im Namespace std::experimental::reflect |
||
| template< class T > concept Object = /* siehe unten */; |
Ein Wert von mindestens 201902 zeigt an, dass die Reflection TS unterstützt wird. | |
Das Object-Konzept ist erfüllt, wenn T ein Meta-Objekt-Typ ist und andernfalls nicht.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <experimental/reflect> namespace reflect = std::experimental::reflect; template<reflect::Object M> struct meta_t { template<reflect::Object M1> friend constexpr bool operator==(meta_t, meta_t<M1>) noexcept { return reflect::reflects_same_v<M, M1>; } template<reflect::Object M1> friend constexpr bool operator!=(meta_t, meta_t<M1>) noexcept { return !reflect::reflects_same_v<M, M1>; } }; template<reflect::Object M> constexpr meta_t<M> meta{}; int main() { static_assert(meta<reflexpr(int)> == meta<reflexpr(signed int)>, ""); // meta<int>; // error: int is not a meta-object type }