#ifndef ADT #define ADT #ifdef WITH_NAMESPACE namespace llvm { #endif template struct AlignedCharArray { alignas(Alignment) char buffer[Size]; }; template class AlignerImpl { T1 t1; }; template union SizerImpl { char arr1[sizeof(T1)]; }; template struct AlignedCharArrayUnion : AlignedCharArray), sizeof(SizerImpl)> {}; template struct SmallVectorStorage { AlignedCharArrayUnion InlineElts[N]; }; template class SmallVector : SmallVectorStorage {}; template struct OptionalStorage { AlignedCharArrayUnion storage; }; template class Optional { OptionalStorage Storage; }; #ifdef WITH_NAMESPACE } // namespace llvm #endif #endif