diff --git a/src/common/utility/tarray.h b/src/common/utility/tarray.h index 25d6e0e7f..ac9d8beb1 100644 --- a/src/common/utility/tarray.h +++ b/src/common/utility/tarray.h @@ -1380,6 +1380,18 @@ public: return n->Pair.Value; } + template + VT &TryEmplace(const KT key, Args&&... args) + { + Node *n = FindKey(key); + if (n == NULL) + { + n = NewKey(key); + ::new(&n->Pair.Value) VT(std::forward(args)...); + } + return n->Pair.Value; + } + //======================================================================= // // Remove