Wenn ich einen Typ habe, der std::is_nothrow_move_constructible
ist, und ich muss es in einem std::any
oder std::variant
speichern, welchen würden Sie empfehlen zu verwenden und warum? Welcher wird den geringsten Overhead geben? Edit: Was sind die verschiedenen Anwendungsfälle für std::variant
vs std::any
?STD :: Variante vs STD :: any, wenn der Typ ist bewegbar construcible
class MyType
{
public:
MyType(const MyType&) = default;
MyType(MyType&&) = default;
MyType() = default;
};
int main(int argc, char* argv[])
{
static_assert(std::is_nothrow_move_constructible<MyType>::value, "Not move constructible");
return 0;
}
Sie werden für verschiedene Zwecke verwendet. –
@RinatVeliakhmedov Hätten Sie etwas dagegen zu erarbeiten. Ich bin mir nicht sicher über die verschiedenen Anwendungsfälle. – 0xBADF00
Verwenden Sie std :: Variante, wenn Sie die Typen kennen, die gespeichert werden können (im Grunde eine sichere Union), std :: any, wenn Sie nicht tun. – ralismark