#include #include class MyClass; enum class MyEnum : short { VAL1, VAL2 }; struct OuterStruct { union NamedUnion { struct InnerStruct { double d; char c; } inner; int i; } unionInstance; }; template struct TemplateStruct { T member[N]; }; template<> struct TemplateStruct { int specialMember[10]; }; template struct AnotherTemplate { T value; }; typedef decltype(nullptr) (MyClass::*InsaneComplexTypeDef) ( decltype((MyEnum::VAL1 == MyEnum::VAL2) ? 1 : 2.0)(TemplateStruct::*ptr)[5][alignof(double)], std::function&&, void (MyClass::*memFnPtr)(TemplateStruct))>, int (MyClass::*&refToMemFnPtr)(TemplateStruct), int (TemplateStruct::*memberPointer)[10], typename std::tuple_element<0, std::tuple>>>::type::*complexMember, template typename AnotherTemplate::*templateMember char&&..., ) volatile const && noexcept;