如果我有一个类型是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