首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::variant::emplace

template <class T, class... Args> T& emplace(Args&&... args);

(1)

(since C++17)

template <class T, class U, class... Args> T& emplace(std::initializer_list<U> il, Args&&... args);

(2)

(since C++17)

template <size_t I, class... Args> std::variant_alternative_t<I, variant>& emplace(Args&&... args);

(3)

(since C++17)

template <size_t I, class U, class... Args> std::variant_alternative_t<I, variant>& emplace(std::initializer_list<U> il, Args&&... args);

(4)

(since C++17)

在现有的variant对象。

1%29相当于emplace<I>(std::forward<Args>(args)...),在哪里I的基于零的索引。TTypes...。此重载只参与以下情况下的过载解决方案:std::is_constructible_v<T, Args...>true,和T只发生一次Types...

2%29相当于emplace<I>(il,std::forward<Args>(args)...),在哪里I的基于零的索引。TTypes...。此重载只参与以下情况下的过载解决方案:std::is_constructible_v<T, std::initializer_list<U>&, Args...>true,和T只发生一次Types...

3%29首先,销毁当前包含的值%28(如果有%29)。然后直接初始化包含的值,就像构造类型的值一样。T_I与争论std::forward<Args>(args)...如果抛出异常,*this可能成为无价值[医]通过[医]例外。此重载只参与以下情况下的过载解决方案:std::is_constructible_v<T_I, Args...>true如果I不少于sizeof...(Types)...

4%29首先,销毁当前包含的值%28(如果有%29)。然后直接初始化包含的值,就像构造类型的值一样。T_I与争论il,std::forward<Args>(args)...如果抛出异常,*this可能成为无价值[医]通过[医]例外。此重载只参与以下情况下的过载解决方案:std::is_constructible_v<T_I, initializer_list<U>&, Args...>true如果I不少于sizeof...(Types)...

参数

args

-

constructor arguments to use when constructing the new value

il

-

initializer_list argument to use when constructing the new value

返回值

对新包含值的引用。

例外

1-4%29在初始化包含的值期间引发的任何异常。

另见

operator=

assigns a variant (public member function)

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券