std::variant::emplace
STD::变体::Emplace
template | (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的基于零的索引。T在Types...。此重载只参与以下情况下的过载解决方案:std::is_constructible_v<T, Args...>是true,和T只发生一次Types...
2%29相当于emplace<I>(il,std::forward<Args>(args)...),在哪里I的基于零的索引。T在Types...。此重载只参与以下情况下的过载解决方案: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) |
---|
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。