Export of internal Abseil changes.
-- 3f04cd3c25a99df91ff913977b8c5b343532db5d by Abseil Team <absl-team@google.com>: Stricter memory order constraints for CycleClock callback. PiperOrigin-RevId: 242670115 -- 216db48375306490f1722a11aaf33080939d9f2f by Abseil Team <absl-team@google.com>: internal/optional.h: move macro from types/optional.h ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS is only used within this file. additionally check the macro with #ifdef rather than #if, fixes -Wundef warning: 'ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS' is not defined, evaluates to 0 PiperOrigin-RevId: 242548205 -- fbe22e7d8dc5c0b3d43ac26297e97ddbaeab3d39 by Samuel Benzaquen <sbenza@google.com>: Implement %f natively for any input. It evaluates the input at runtime and allocates stack space accordingly. This removes a potential fallback into snprintf, improves performance, and removes all memory allocations in this formatting path. PiperOrigin-RevId: 242531736 -- 1458f9ba2a79ef0534e46527cd34770dee54164d by Greg Falcon <gfalcon@google.com>: Add explicit check for NVCC in compressed_tuple.h. NVCC claims to be MSVC, but does not implement this MSVC attribute. PiperOrigin-RevId: 242513453 GitOrigin-RevId: 3f04cd3c25a99df91ff913977b8c5b343532db5d Change-Id: I0742e8619c5248c7607961113e406486bc0e279b
This commit is contained in:
parent
044da8a29c
commit
dbae8764fb
8 changed files with 78 additions and 584 deletions
|
|
@ -64,34 +64,6 @@ using std::nullopt;
|
|||
#include "absl/types/bad_optional_access.h"
|
||||
#include "absl/types/internal/optional.h"
|
||||
|
||||
// ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS
|
||||
//
|
||||
// Inheriting constructors is supported in GCC 4.8+, Clang 3.3+ and MSVC 2015.
|
||||
// __cpp_inheriting_constructors is a predefined macro and a recommended way to
|
||||
// check for this language feature, but GCC doesn't support it until 5.0 and
|
||||
// Clang doesn't support it until 3.6.
|
||||
// Also, MSVC 2015 has a bug: it doesn't inherit the constexpr template
|
||||
// constructor. For example, the following code won't work on MSVC 2015 Update3:
|
||||
// struct Base {
|
||||
// int t;
|
||||
// template <typename T>
|
||||
// constexpr Base(T t_) : t(t_) {}
|
||||
// };
|
||||
// struct Foo : Base {
|
||||
// using Base::Base;
|
||||
// }
|
||||
// constexpr Foo foo(0); // doesn't work on MSVC 2015
|
||||
#if defined(__clang__)
|
||||
#if __has_feature(cxx_inheriting_constructors)
|
||||
#define ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS 1
|
||||
#endif
|
||||
#elif (defined(__GNUC__) && \
|
||||
(__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 8)) || \
|
||||
(__cpp_inheriting_constructors >= 200802) || \
|
||||
(defined(_MSC_VER) && _MSC_VER >= 1910)
|
||||
#define ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS 1
|
||||
#endif
|
||||
|
||||
namespace absl {
|
||||
|
||||
// nullopt_t
|
||||
|
|
@ -791,7 +763,6 @@ struct hash<absl::optional<T> >
|
|||
|
||||
} // namespace std
|
||||
|
||||
#undef ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS
|
||||
#undef ABSL_MSVC_CONSTEXPR_BUG_IN_UNION_LIKE_CLASS
|
||||
|
||||
#endif // ABSL_HAVE_STD_OPTIONAL
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue