Remove ConditionallyExistent, because it violates the C++ spec
Summary: [Folly] Remove `ConditionallyExistent`, because it violates the C++ spec. The spec says that struct and class types occupy at least one byte. But the point of this class is to occupy zero bytes when the condition is false. That can't be made to work. GCC and Clang support an extension allowing, in some cases, structs to occupy no space at all. But it violates the spec, and MSVC does not support the extension. There is, sort of, the possibility of empty-base-class-optimization. But it will be very painful to use, and it will only work in some cases. Since this is broken now, and fixing it would violate the C++ spec and break this under MSVC, it's better just to remove it. Reviewed By: nbronson, Orvid Differential Revision: D3696371 fbshipit-source-id: c475c6e15d9ff1bc4c44dc7e336ce74e6db640ef
Showing
Please register or sign in to comment