Strukturierte Bindungen BreiteC++

Programme in C++. Entwicklerforum
Guest
 Strukturierte Bindungen Breite

Post by Guest »

Ist es möglich zu bestimmen, wie viele Variablennamen ich in quadratischen Klammern mit strukturierter Bindungssyntax angeben soll, um die Anzahl der Datenelemente einer einfachen rechten Struktur zu entsprechen ?

Ich möchte einen Teil der generischen Bibliothek erstellen, die strukturierte Bindungen zum Zerlegen beliebiger Klassen in seine Bestandteile verwendet. Im Moment gibt es keine variadische Version strukturierter Bindungen (und ich denke, ich kann nicht für die aktuelle Syntax vorgeschlagen werden), aber mein erster Gedanke ist es, eine Reihe von Überladungen einiger Funktionen zu erstellen () , die eine Zerlegung durchführt von Struct Parameter in einen Satz seiner Bestandteile. decompose () sollte nach Anzahl der Parameter -Datenmitglieder (strukturiert ) überlastet werden. Derzeit kann ConstExPR if Syntax auch verwendet werden, um dies zu versenden. Aber wie kann ich etwas Ähnliches wie sizeof ... operator für oben genannte Zwecke emulieren? Ich kann keine Auto -[A, B, C] Syntax irgendwo in Sfinae -Konstruktionen verwenden, da es sich um eine Zersetzungsdeklaration und AFAIK handelt, und eine Deklaration kann nicht in DeclType verwendet werden, Ich kann es auch nicht für meine Zwecke im Körper von Lambda -Funktionen verwenden, da Lambda -Funktionen auch in Vorlagenargumenten nicht verwendet werden können. wie sizeof [] s /

Code: Select all

sizeof[](S)
für die Klasse S ), aber so etwas wie folgt ist auch akzeptabel:

template< typename type, typename = void >
struct sizeof_struct
{

};

template< typename type >
struct sizeof_struct< type, std::void_t< decltype([] { auto && [p1] = std::declval< type >(); void(p1); }) > >
: std::integral_constant< std::size_t, 1 >
{

};

template< typename type >
struct sizeof_struct< type, std::void_t< decltype([] { auto && [p1, p2] = std::declval< type >(); void(p1); void(p2); }) > >
: std::integral_constant< std::size_t, 2 >
{

};

... etc up to some reasonable arity
< /code>

Möglicherweise können wir sie in die Argumente von Vorlage verwenden. Was denkst du?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post