| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIB_STDCOMPAT_VERSION_H_ |
| #define LIB_STDCOMPAT_VERSION_H_ |
| |
| // This <version> polyfills is meant to provide the feature testing macros for the rest of |
| // the stdcompat library. It is not meant to be a full polyfill of <version>. |
| |
| #if __has_include(<version>) && !defined(LIB_STDCOMPAT_USE_POLYFILLS) |
| #include <version> |
| #elif __cplusplus > 201703L && !defined(LIB_STDCOMPAT_USE_POLYFILLS) |
| #error "cpp=std20 must provide a '<version>' header." |
| #else |
| |
| #if __has_include(<optional>) && !defined(__cpp_lib_optional) && __cplusplus >= 201606L |
| #define __cpp_lib_optional 201606L |
| #endif |
| |
| #if __has_include(<string_view>) && !defined(__cpp_lib_string_view) && __cplusplus >= 201606L |
| #define __cpp_lib_string_view 201606L |
| #endif |
| |
| #if !defined(__cpp_lib_void_t) && __cplusplus >= 201411L |
| #define __cpp_lib_void_t 201411L |
| #endif |
| |
| #if !defined(__cpp_lib_logical_traits) && __cplusplus >= 201510L |
| #define __cpp_lib_logical_traits 201510L |
| #endif |
| |
| #endif // __has_include(<version>) && !defined(LIB_STDCOMPAT_USE_POLYFILLS) |
| |
| #endif // LIB_STDCOMPAT_VERSION_H_ |