|
|
|
@ -151,14 +151,16 @@ class PolymorphicManualConstructor { |
|
|
|
|
private: |
|
|
|
|
template <class DerivedType> |
|
|
|
|
void FinishInit(DerivedType* p) { |
|
|
|
|
static_assert(manual_ctor_impl::is_one_of<DerivedType, DerivedTypes...>::value, |
|
|
|
|
"DerivedType must be one of the predeclared DerivedTypes"); |
|
|
|
|
static_assert( |
|
|
|
|
manual_ctor_impl::is_one_of<DerivedType, DerivedTypes...>::value, |
|
|
|
|
"DerivedType must be one of the predeclared DerivedTypes"); |
|
|
|
|
GPR_ASSERT(reinterpret_cast<BaseType*>(static_cast<DerivedType*>(p)) == p); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
typename std::aligned_storage< |
|
|
|
|
grpc_core::manual_ctor_impl::max_size_of<DerivedTypes...>::value, |
|
|
|
|
grpc_core::manual_ctor_impl::max_align_of<DerivedTypes...>::value>::type space_; |
|
|
|
|
grpc_core::manual_ctor_impl::max_align_of<DerivedTypes...>::value>::type |
|
|
|
|
space_; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename Type> |
|
|
|
|