folly: workaround AlignedSysAllocator vs Dual ABI issue with gcc
Summary: `AlignedSysAllocator` doesn't implement the optional `rebind` or `size_type` portions of the C++ allocator concept. This is ok in GCC if the C++11 ABI is in use but causes compilation to fail with errors like these: ``` folly/Range.h: In instantiation of ‘void folly::Range<Iter>::res et(folly::Range<Iter>::string<Alloc>&) [with Alloc = folly::AlignedSysAllocator<char>; Iter = const char*; folly::Range<Iter>::string<Alloc> = std:: basic_string<char, std::char_traits<char>, folly::AlignedSysAllocator<char> >]’: folly/test/RangeTest.cpp:235:18: required from here folly/Range.h:420:27: error: ‘folly::Range<const char*>::string< folly::AlignedSysAllocator<char> >’ {aka ‘const class std::basic_string<char, std::char_traits<char>, folly::AlignedSysAllocator<char> >’} has no me mber named ‘size’ reset(str.data(), str.size()); ~~~~^~~~ ``` This diff works around this issue by only compiling in the problematic test if the C++11 ABI is enabled. Reviewed By: yfeldblum Differential Revision: D14702585 fbshipit-source-id: ea0c5fcfb0d69994d2958c2c236fe002959c824d
Showing
Please register or sign in to comment