32 template <
typename... Args>
35 new (&storage_) T(std::forward<Args>(args)...);
42 T&
access() {
return *
reinterpret_cast<T*
>(&storage_); }
43 const T&
access()
const {
return *
reinterpret_cast<const T*
>(&storage_); }
46 typename std::aligned_storage<sizeof(T), alignof(T)>::type storage_;
~never_destroyed()=default
Does nothing. Guaranteed!
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
never_destroyed(Args &&... args)
Passes the constructor arguments along to T using perfect forwarding.
Definition: never_destroyed.h:33
Wraps an underlying type T such that its storage is a direct member field of this object (i...
Definition: never_destroyed.h:24
T & access()
Returns the underlying T reference.
Definition: never_destroyed.h:42