Konzept oder Merkmal, das auf Kopierinitialisierung überprüft werden sollC++

Programme in C++. Entwicklerforum
Anonymous
 Konzept oder Merkmal, das auf Kopierinitialisierung überprüft werden soll

Post by Anonymous »

Ich möchte prüfen, wie und ob ein Objekt vom Typ A aus einem Objekt vom Typ B konstruiert werden kann.

Ich möchte auch zwischen direkter und Kopierinitialisierung unterscheiden und habe daher diese Konzepte geschrieben:

Code: Select all

template
concept can_direct_init_from = requires { A{std::declval()}; };
template
concept can_copy_init_from = requires { A a = std::declval(); };
Das erste ist meiner Meinung nach genau gleichbedeutend mit std::constructible_from, aber ich kenne kein ähnliches Konzept für den Fall der Kopierinitialisierung.

Code: Select all

std::convertible_to
scheint nicht für eine Kopierinitialisierung verwendet zu werden (gemäß den entsprechenden Merkmalen entspricht es dem Testen eines static_cast von B nach A).
Außerdem ist meine Version schlecht formatiert:

Fehler: erwarteter Primärausdruck vor 'a'

AFAU, ich kann nicht „declare“-Variable innerhalb einer „requires“-Klausel.
Gibt es eine Möglichkeit zu testen, „ist die Kopie initialisierbar von“? Möglicherweise durch die Korrektur meines Konzepts?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post