Was bedeutet T[1] im Konzept is_convertible_without_narrowing?C++

Programme in C++. Entwicklerforum
Guest
 Was bedeutet T[1] im Konzept is_convertible_without_narrowing?

Post by Guest »

Das folgende Konzept aus C++20, dem vollständigen Leitfaden (angepasst von http://wg21.link/p0870), verbietet einschränkende Konvertierungen. Beispiel: float to int (1.9f => 1).

Code: Select all

template 
concept ConvertibleWithoutNarrowing = requires (From&& from) {
{ std::type_identity_t{std::forward(from)}} -> std::same_as;
};
Das Buch verwendet dies für eine Sammlung C, die beim Hinzufügen von Daten keine einschränkenden Konvertierungen aufweisen darf:

Code: Select all

template
requires ConvertsWithoutNarrowing
void add(C& collection, const T& val) {...}

//usage:
std::vector vec_i;
add(vec_i, 1); //OK
add(vec_i, 1.3); //does not compile.

Ich verstehe die allgemeine Idee hinter dem Konzept, aber was bedeutet das [1] im letzten Teil std::same_as; tun?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post