Std::copy_assignable_v funktioniert nicht für Referenztypen, wie kann man das beheben?C++

Programme in C++. Entwicklerforum
Anonymous
 Std::copy_assignable_v funktioniert nicht für Referenztypen, wie kann man das beheben?

Post by Anonymous »

Betrachten Sie den folgenden Code, in dem ich teste, ob ein Typ kopierzuweisbar ist, indem ich das Typmerkmal std::is_copy_assignable_v verwende:

Code: Select all

#include
#include 

struct IntProxy
{
int& i;
};

int main()
{
// Expected false
std::println("{}", std::is_copy_assignable_v);    // OK, assignment operator deleted

// Unexpected true...
std::println("{}", std::is_copy_assignable_v);        // Huh??
}
Demo
Der IntProxy wird korrekt diagnostiziert, aber der int& wird als kopierbar zuweisbar angezeigt, was eigentlich nicht der Fall ist. Wie schreibe ich ein besseres is_copy_assignable, das auch für Referenztypen funktioniert? Ich verwende jetzt is_copy_assignable_v && !is_reference_v, aber das fühlt sich etwas umständlich an.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post