Quuxplusone added a comment. > Consider this STL code: > > template<typename _Alloc> > struct __alloc_traits > #if __cplusplus >= 201103L > : std::allocator_traits<_Alloc> > #endif > { // ... > }; > > > This class template would create ODR errors during merging the two units, > since in one translation unit the class template has a base class, however > in the other unit it has none.
How is `#if __cplusplus >= 201103L` qualitatively different from `#ifndef NDEBUG` or `#if MYLIB_ABI_VERSION==2` or `#if __DATE__ == "2018-04-01"`? Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D57906/new/ https://reviews.llvm.org/D57906 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits