12c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
22c6217f2SLouis Dionne //
32c6217f2SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42c6217f2SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
52c6217f2SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62c6217f2SLouis Dionne //
72c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
82c6217f2SLouis Dionne //
92c6217f2SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py
102c6217f2SLouis Dionne // and should not be edited manually.
112c6217f2SLouis Dionne //
122c6217f2SLouis Dionne // clang-format off
132c6217f2SLouis Dionne 
142c6217f2SLouis Dionne // <optional>
152c6217f2SLouis Dionne 
162c6217f2SLouis Dionne // Test the feature test macros defined by <optional>
172c6217f2SLouis Dionne 
182c6217f2SLouis Dionne /*  Constant              Value
192c6217f2SLouis Dionne     __cpp_lib_optional    201606L [C++17]
20*9e5c2934SMark de Wever                           202110L [C++2b]
212c6217f2SLouis Dionne */
222c6217f2SLouis Dionne 
232c6217f2SLouis Dionne #include <optional>
242c6217f2SLouis Dionne #include "test_macros.h"
252c6217f2SLouis Dionne 
262c6217f2SLouis Dionne #if TEST_STD_VER < 14
272c6217f2SLouis Dionne 
282c6217f2SLouis Dionne # ifdef __cpp_lib_optional
292c6217f2SLouis Dionne #   error "__cpp_lib_optional should not be defined before c++17"
302c6217f2SLouis Dionne # endif
312c6217f2SLouis Dionne 
322c6217f2SLouis Dionne #elif TEST_STD_VER == 14
332c6217f2SLouis Dionne 
342c6217f2SLouis Dionne # ifdef __cpp_lib_optional
352c6217f2SLouis Dionne #   error "__cpp_lib_optional should not be defined before c++17"
362c6217f2SLouis Dionne # endif
372c6217f2SLouis Dionne 
382c6217f2SLouis Dionne #elif TEST_STD_VER == 17
392c6217f2SLouis Dionne 
402c6217f2SLouis Dionne # ifndef __cpp_lib_optional
412c6217f2SLouis Dionne #   error "__cpp_lib_optional should be defined in c++17"
422c6217f2SLouis Dionne # endif
432c6217f2SLouis Dionne # if __cpp_lib_optional != 201606L
442c6217f2SLouis Dionne #   error "__cpp_lib_optional should have the value 201606L in c++17"
452c6217f2SLouis Dionne # endif
462c6217f2SLouis Dionne 
472c6217f2SLouis Dionne #elif TEST_STD_VER == 20
482c6217f2SLouis Dionne 
492c6217f2SLouis Dionne # ifndef __cpp_lib_optional
502c6217f2SLouis Dionne #   error "__cpp_lib_optional should be defined in c++20"
512c6217f2SLouis Dionne # endif
522c6217f2SLouis Dionne # if __cpp_lib_optional != 201606L
532c6217f2SLouis Dionne #   error "__cpp_lib_optional should have the value 201606L in c++20"
542c6217f2SLouis Dionne # endif
552c6217f2SLouis Dionne 
562c6217f2SLouis Dionne #elif TEST_STD_VER > 20
572c6217f2SLouis Dionne 
582c6217f2SLouis Dionne # ifndef __cpp_lib_optional
592c6217f2SLouis Dionne #   error "__cpp_lib_optional should be defined in c++2b"
602c6217f2SLouis Dionne # endif
61*9e5c2934SMark de Wever # if __cpp_lib_optional != 202110L
62*9e5c2934SMark de Wever #   error "__cpp_lib_optional should have the value 202110L in c++2b"
632c6217f2SLouis Dionne # endif
642c6217f2SLouis Dionne 
652c6217f2SLouis Dionne #endif // TEST_STD_VER > 20
662c6217f2SLouis Dionne 
67