*`mstd::size_t` (`<mstd_cstddef>`) - alias for `std::size_t`
*`std::swap` (`<utility>`) - toolchain's `std::swap` (not move-capable for ARM C 5)
*`mstd::swap` (`<mstd_utility>`) - alias for `std::swap` or move-capable ARM C 5 replacement.
*`std::atomic` (`<atomic>`) - toolchain's `std::atomic` (not implemented for IAR ARMv6)
*`mstd::atomic` (`<mstd_atomic>`) - custom `mstd::atomic` for all toolchains
*`std::void_t` (`<type_traits>`) - toolchain's `std::void_t` if available (it's C++17 so likely not)
*`mstd::void_t` (`<mstd_type_traits>`) - alias for `std::void_t` if available, else local implementation
*`std::thread` (`<thread>`) - toolchain's `std::thread` - not available or ported
*`mstd::thread` - doesn't exist - `mstd` APIs only exist if available on all toolchains
Using `std::xxx` will generally work, but may suffer from toolchain variance. `mstd::xxx` should always be better - it will either be an alias to `std::xxx`, or work better for Mbed OS.
In portable code, when compiling for non-Mbed OS, the directive `namespace mstd == std` can be used