/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththisfile,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
// For types which are trivially default constructible, like `int`, force the // value constructor by wrapping the type in this struct. This is an // implementation detail which will be hidden by the generated IPDL compiler // code. template <typename T> struct IPDLStructMemberWrapper { template <typename... Args>
constexpr MOZ_IMPLICIT IPDLStructMemberWrapper(Args&&... aArgs)
: mVal(std::forward<Args>(aArgs)...) {}
MOZ_IMPLICIT operator T&() { return mVal; }
MOZ_IMPLICIT operatorconst T&() const { return mVal; }
T mVal{};
};
template <typename T>
using IPDLStructMember =
std::conditional_t<std::is_trivially_default_constructible_v<T>,
IPDLStructMemberWrapper<T>, T>;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.