Wie vermeide ich eine implizite Konvertierung in C++-Konzepten?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie vermeide ich eine implizite Konvertierung in C++-Konzepten?

Post by Anonymous »

Gibt es eine Möglichkeit, implizite Konvertierungen in Konzepten zu verhindern? Dieses Beispiel wird beispielsweise mit GCC und clang kompiliert, wenn ich eigentlich möchte, dass es eine Fehlermeldung ausgibt, dass der char-Konstruktor fehlt:

Code: Select all

template
concept specific_constructors = requires {
T(int{}, char{});
T(int{});
T(char{});
};

struct test {
test(int a_, char b_): a{a_}, b{b_} {}
explicit test(int a_): a{a_}, b{} {}
//explicit test(char b_): a{}, b{b_} {}
private:
int a;
char b;
};

auto main() -> int {
specific_constructors auto const v1 {test{1,'a'}};
}
Derzeit habe ich nur daran gedacht, das Zeichen in eine Struktur zu packen oder einen starken Typ zu verwenden, aber ich suche nach anderen verfügbaren Optionen.

BEARBEITEN:
Nur zur Klarheit lautet die Frage, wie ich das Konzept „specific_constructors“ so schreibe, dass es für die Klasse fehlschlägt test, da es keinen speziellen char-Konstruktor gibt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post
  • Implizite Konvertierung in C++-Konzepten
    by Anonymous » » in C++
    0 Replies
    0 Views
    Last post by Anonymous
  • Warum erfordert STD :: Prädikat * implizite * Konvertierung in Bool?
    by Anonymous » » in C++
    0 Replies
    54 Views
    Last post by Anonymous
  • Warum ist die implizite Konvertierung in der perfekten Weiterleitung nicht zulässig?
    by Anonymous » » in C++
    0 Replies
    27 Views
    Last post by Anonymous
  • Implizite C#-Konvertierung von Null
    by Anonymous » » in C#
    0 Replies
    24 Views
    Last post by Anonymous
  • Implizite C#-Konvertierung von Null
    by Anonymous » » in C#
    0 Replies
    17 Views
    Last post by Anonymous