When trying to compile with c++20 support (added in #24169) on macOS 12.3 on master I get inundated with the below warning.

```
 ./configure --enable-c++20 --enable-suppress-external-warnings
```

```
In file included from bitcoin-cli.cpp:19:
In file included from ./util/system.h:20:
./fs.h:71:29: warning: 'u8path<std::string>' is deprecated [-Wdeprecated-declarations]
    return std::filesystem::u8path(utf8_str);
                            ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/filesystem:1570:27: note: 'u8path<std::string>' has been explicitly marked deprecated here
_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T
                          ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:1078:43: note: expanded from macro '_LIBCPP_DEPRECATED_WITH_CHAR8_T'
#  define _LIBCPP_DEPRECATED_WITH_CHAR8_T _LIBCPP_DEPRECATED
                                          ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:1043:48: note: expanded from macro '_LIBCPP_DEPRECATED'
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
1 warning generated.
```

{
    return std::filesystem::absolute(p);
}
static inline bool exists(const path& p)
{
    return std::filesystem::exists(p);
}
static inline auto quoted(const std::string& s)
{
    return std::quoted(s, '"', '&');
}
static inline path operator/(path p1, path p2)
{
    p1 /= std::move(p2);
    return p1;
}
static inline path operator/(path p1, const char* p2)
{
    p1 /= p2;
    return p1;
}
static inline path operator+(path p1, const char* p2)
{
    p1 += p2;
    return p1;
}
static inline path operator+(path p1, path::value_type p2)