constexpr std::optional<reference> try_push_back(const T& x); // (1) C++26
constexpr std::optional<reference> try_push_back(T&& x); // (2) C++26
概要
末尾へ要素追加を試みる。容量超過時は例外を送出せず、std::nulloptを返す。
- (1) :
xをコピーして末尾への追加を試みる。 - (2) :
xをムーブして末尾への追加を試みる。
効果
size() < Nの場合、xを末尾に追加する。そうでない場合、何もしない。
戻り値
要素が追加された場合は追加された要素への参照を保持したstd::optional、追加できなかった場合はstd::nulloptを返す。
例外
投げない(Tのコンストラクタが例外を送出する場合を除く)
計算量
定数時間
例
#include <print>
#include <inplace_vector>
int main()
{
std::inplace_vector<int, 3> iv = {1, 2, 3};
auto r1 = iv.try_push_back(4);
std::println("push_back(4): {}", (r1 ? "success" : "failed"));
iv.pop_back();
auto r2 = iv.try_push_back(4);
std::println("push_back(4): {}", (r2 ? "success" : "failed"));
std::println("value: {}", *r2);
}
出力
push_back(4): failed
push_back(4): success
value: 4
バージョン
言語
- C++26
処理系
- Clang: 23 ✅
- GCC: 16 ✅
- Visual C++: 2026 Update 2 ❌