如果我有一個類型是std::is_nothrow_move_constructible
,我需要將它存儲在std::any
或std::variant
,你會推薦使用哪一個?爲什麼?哪一個會給最少的開銷?編輯:std::variant
和std::any
有什麼不同的用例?std :: variant vs std ::任何當類型是移動可構造
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;
}
它們被用於不同的目的。 –
@RinatVeliakhmedov你想介紹一下嗎?我不確定不同的用例。 – 0xBADF00
當你知道可以存儲的類型(基本上是一個更安全的聯合)時,使用std :: variant,當你不知道的時候std :: any。 – ralismark