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??
}
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.
Mobile version