--------------------------------------------------- -----------------
``__cpp_lib_hazard_pointer`` *unimplemented*
--------------------------------------------------- -----------------
- ``__cpp_lib_ratio`` *unimplemented*
+ ``__cpp_lib_ratio`` ``202306L``
--------------------------------------------------- -----------------
``__cpp_lib_rcu`` *unimplemented*
--------------------------------------------------- -----------------
"`P1759R6 <https://wg21.link/P1759R6>`__","LWG","Native handles and file streams","Varna June 2023","","",""
"`P2697R1 <https://wg21.link/P2697R1>`__","LWG","Interfacing ``bitset`` with ``string_view``","Varna June 2023","","",""
"`P1383R2 <https://wg21.link/P1383R2>`__","LWG","More ``constexpr`` for ``<cmath>`` and ``<complex>``","Varna June 2023","","",""
-"`P2734R0 <https://wg21.link/P2734R0>`__","LWG","Adding the new SI prefixes","Varna June 2023","","",""
+"`P2734R0 <https://wg21.link/P2734R0>`__","LWG","Adding the new SI prefixes","Varna June 2023","|Complete|","Clang 17",""
"`P2548R6 <https://wg21.link/P2548R6>`__","LWG","``copyable_function``","Varna June 2023","","",""
"`P2714R1 <https://wg21.link/P2714R1>`__","LWG","Bind front and back to NTTP callables","Varna June 2023","","",""
"`P2630R4 <https://wg21.link/P2630R4>`__","LWG","``submdspan``","Varna June 2023","","",""
template <class R1, class R2> struct ratio_greater_equal;
// convenience SI typedefs
+using quecto = ratio <1, 1'000'000'000'000'000'000'000'000'000'000>; // Since C++26; not supported
+using ronto = ratio <1, 1'000'000'000'000'000'000'000'000'000>; // Since C++26; not supported
typedef ratio<1, 1000000000000000000000000> yocto; // not supported
typedef ratio<1, 1000000000000000000000> zepto; // not supported
typedef ratio<1, 1000000000000000000> atto;
typedef ratio< 1000000000000000000, 1> exa;
typedef ratio< 1000000000000000000000, 1> zetta; // not supported
typedef ratio<1000000000000000000000000, 1> yotta; // not supported
+using ronna = ratio <1'000'000'000'000'000'000'000'000'000, 1>; // Since C++26; not supported
+using quetta = ratio <1'000'000'000'000'000'000'000'000'000'000, 1>; // Since C++26; not supported
// 20.11.5, ratio comparison
template <class R1, class R2> inline constexpr bool ratio_equal_v
// # define __cpp_lib_fstream_native_handle 202306L
// # define __cpp_lib_function_ref 202306L
// # define __cpp_lib_hazard_pointer 202306L
-// # define __cpp_lib_ratio 202306L
+# define __cpp_lib_ratio 202306L
// # define __cpp_lib_rcu 202306L
// # define __cpp_lib_smart_ptr_owner_equality 202306L
// # define __cpp_lib_sstream_from_string_view 202306L
#elif TEST_STD_VER > 23
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ratio
-# error "__cpp_lib_ratio should be defined in c++26"
-# endif
-# if __cpp_lib_ratio != 202306L
-# error "__cpp_lib_ratio should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_ratio
-# error "__cpp_lib_ratio should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_ratio
+# error "__cpp_lib_ratio should be defined in c++26"
+# endif
+# if __cpp_lib_ratio != 202306L
+# error "__cpp_lib_ratio should have the value 202306L in c++26"
# endif
#endif // TEST_STD_VER > 23
# endif
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_ratio
-# error "__cpp_lib_ratio should be defined in c++26"
-# endif
-# if __cpp_lib_ratio != 202306L
-# error "__cpp_lib_ratio should have the value 202306L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_ratio
-# error "__cpp_lib_ratio should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_ratio
+# error "__cpp_lib_ratio should be defined in c++26"
+# endif
+# if __cpp_lib_ratio != 202306L
+# error "__cpp_lib_ratio should have the value 202306L in c++26"
# endif
# ifndef __cpp_lib_raw_memory_algorithms
"name": "__cpp_lib_ratio",
"values": {"c++26": 202306}, # P2734R0 Adding the new SI prefixes
"headers": ["ratio"],
- "unimplemented": True,
},
{
"name": "__cpp_lib_raw_memory_algorithms",