@@ -39,6 +39,7 @@ test harness, typically by moving the sample `main()` body into a namespaced
3939- ` std::mutex ` : < https://en.cppreference.com/w/cpp/thread/mutex >
4040- ` std::lock_guard ` : < https://en.cppreference.com/w/cpp/thread/lock_guard >
4141- ` std::shared_mutex ` : < https://en.cppreference.com/w/cpp/thread/shared_mutex >
42+ - ` std::shared_timed_mutex ` : < https://en.cppreference.com/w/cpp/thread/shared_timed_mutex >
4243- ` std::shared_lock ` : < https://en.cppreference.com/w/cpp/thread/shared_lock >
4344- ` std::timed_mutex ` : < https://en.cppreference.com/w/cpp/thread/timed_mutex >
4445- ` std::recursive_mutex ` : < https://en.cppreference.com/w/cpp/thread/recursive_mutex >
@@ -148,6 +149,14 @@ test harness, typically by moving the sample `main()` body into a namespaced
148149- ` std::ranges::slide_view ` : < https://en.cppreference.com/w/cpp/ranges/slide_view >
149150- ` std::ranges::stride_view ` : < https://en.cppreference.com/w/cpp/ranges/stride_view >
150151- ` std::ranges::repeat_view ` : < https://en.cppreference.com/w/cpp/ranges/repeat_view >
152+ - ` std::ranges::take_view ` : < https://en.cppreference.com/w/cpp/ranges/take_view >
153+ - ` std::ranges::drop_view ` : < https://en.cppreference.com/w/cpp/ranges/drop_view >
154+ - ` std::ranges::reverse_view ` : < https://en.cppreference.com/w/cpp/ranges/reverse_view >
155+ - ` std::ranges::join_view ` : < https://en.cppreference.com/w/cpp/ranges/join_view >
156+ - ` std::ranges::split_view ` : < https://en.cppreference.com/w/cpp/ranges/split_view >
157+ - ` std::ranges::values_view ` : < https://en.cppreference.com/w/cpp/ranges/values_view >
158+ - ` std::ranges::keys_view ` : < https://en.cppreference.com/w/cpp/ranges/keys_view >
159+ - ` std::ranges::elements_view ` : < https://en.cppreference.com/w/cpp/ranges/elements_view >
151160- ` std::merge ` : < https://en.cppreference.com/w/cpp/algorithm/merge >
152161- ` std::make_heap ` : < https://en.cppreference.com/w/cpp/algorithm/make_heap >
153162- ` std::next_permutation ` : < https://en.cppreference.com/w/cpp/algorithm/next_permutation >
@@ -195,9 +204,17 @@ test harness, typically by moving the sample `main()` body into a namespaced
195204- ` std::derived_from ` / ` std::same_as ` : < https://en.cppreference.com/w/cpp/concepts >
196205- ` std::strong_ordering ` : < https://en.cppreference.com/w/cpp/utility/compare/strong_ordering >
197206- ` std::numbers ` : < https://en.cppreference.com/w/cpp/numeric/constants >
207+ - ` std::chrono::year_month_day ` : < https://en.cppreference.com/w/cpp/chrono/year_month_day >
208+ - ` std::chrono::weekday ` : < https://en.cppreference.com/w/cpp/chrono/weekday >
209+ - ` std::chrono::hh_mm_ss ` : < https://en.cppreference.com/w/cpp/chrono/hh_mm_ss >
198210- ` std::format ` : < https://en.cppreference.com/w/cpp/utility/format/format >
211+ - ` std::formatter ` : < https://en.cppreference.com/w/cpp/utility/format/formatter >
199212- ` std::print ` : < https://en.cppreference.com/w/cpp/io/print >
200213- ` std::regex ` : < https://en.cppreference.com/w/cpp/regex >
214+ - ` std::regex_match ` : < https://en.cppreference.com/w/cpp/regex/regex_match >
215+ - ` std::regex_iterator ` : < https://en.cppreference.com/w/cpp/regex/regex_iterator >
216+ - ` std::regex_token_iterator ` : < https://en.cppreference.com/w/cpp/regex/regex_token_iterator >
217+ - ` std::quoted ` : < https://en.cppreference.com/w/cpp/io/manip/quoted >
201218- ` std::distance ` : < https://en.cppreference.com/w/cpp/iterator/distance >
202219- ` std::advance ` : < https://en.cppreference.com/w/cpp/iterator/advance >
203220- ` std::next ` : < https://en.cppreference.com/w/cpp/iterator/next >
@@ -248,6 +265,9 @@ test harness, typically by moving the sample `main()` body into a namespaced
248265- ` std::filesystem::space ` : < https://en.cppreference.com/w/cpp/filesystem/space >
249266- ` std::filesystem::rename ` : < https://en.cppreference.com/w/cpp/filesystem/rename >
250267- ` std::filesystem::temp_directory_path ` : < https://en.cppreference.com/w/cpp/filesystem/temp_directory_path >
268+ - ` std::filesystem::absolute ` : < https://en.cppreference.com/w/cpp/filesystem/absolute >
269+ - ` std::filesystem::current_path ` : < https://en.cppreference.com/w/cpp/filesystem/current_path >
270+ - ` std::filesystem::relative ` / ` std::filesystem::proximate ` : < https://en.cppreference.com/w/cpp/filesystem/relative >
251271- ` std::filesystem::last_write_time ` : < https://en.cppreference.com/w/cpp/filesystem/last_write_time >
252272- ` std::filesystem::canonical ` / ` std::filesystem::weakly_canonical ` : < https://en.cppreference.com/w/cpp/filesystem/canonical >
253273- ` std::function ` : < https://en.cppreference.com/w/cpp/utility/functional/function >
@@ -301,6 +321,14 @@ because the example embeds a 32 KiB tape buffer in the interpreter object.
301321
302322The listed C++23 ` std::views ` examples are compiled into the driver test when
303323the matching feature-test macro is available.
324+ The ` std::ranges::split_view ` example is kept source-identical where the active
325+ STL provides ` std::string_view ` 's C++23 range constructor; older toolsets print
326+ a skip line instead of using a non-cppreference workaround.
327+ The ` std::ranges::keys_view ` and ` std::ranges::elements_view ` examples keep the
328+ same view operations; their Unicode table/letter output is transliterated to
329+ ASCII in the driver source to keep the test file encoding simple. The
330+ ` keys_view ` harness restores ` std::cout ` 's previous locale after the example
331+ because all cppreference examples run in one driver instance.
304332
305333The ` std::to_chars ` test follows the cppreference example, including the
306334floating-point overload calls. The ` std::from_chars ` test follows the
@@ -312,12 +340,19 @@ The `std::expected` example is compiled into the driver test when the
312340
313341The ` std::format ` and ` std::print ` examples run in the default driver build.
314342
315- The ` std::regex ` example keeps the cppreference ` regex_search ` , iterator, and
316- ` regex_replace ` flow.
343+ The ` std::shared_timed_mutex ` page leaves the protected resource as
344+ ` /* data */ ` ; the driver harness uses a small ` int ` so the assignment example
345+ can verify the copied value.
346+
347+ The ` std::regex ` coverage keeps the cppreference ` regex_search ` ,
348+ ` regex_match ` , iterator, token-iterator, and ` regex_replace ` flows.
317349
318350The filesystem examples listed above are ported into the driver harness.
319351The ` copy_symlink ` page currently has no cppreference example, so the harness
320352uses a small direct check for that function.
353+ The ` current_path ` and ` canonical ` examples restore the original current path
354+ before returning because cppreference examples are standalone programs, while
355+ the driver harness executes many examples in one process.
321356
322357The ` std::complex ` test keeps the arithmetic portion of the cppreference
323358example and also includes the ` std::exp ` and ` std::pow ` examples.
0 commit comments