mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
partial bitcoin#24169: Add --enable-c++20 option
excludes: - fae679065e4ef0c6383bbdd1876aaed6c1e40104
This commit is contained in:
parent
a3b79267e0
commit
0f239203a8
@ -72,11 +72,11 @@ AC_ARG_ENABLE([c++20],
|
||||
[use_cxx20=$enableval],
|
||||
[use_cxx20=no])
|
||||
|
||||
dnl Require C++17 or C++20 compiler (no GNU extensions)
|
||||
if test "x$use_cxx20" = xyes; then
|
||||
AX_CXX_COMPILE_STDCXX([20], [noext], [mandatory])
|
||||
else
|
||||
dnl Require C++17 compiler (no GNU extensions)
|
||||
if test "$use_cxx20" = "no"; then
|
||||
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
|
||||
else
|
||||
AX_CXX_COMPILE_STDCXX([20], [noext], [mandatory])
|
||||
fi
|
||||
|
||||
dnl Check if -latomic is required for <std::atomic>
|
||||
|
18
src/fs.h
18
src/fs.h
@ -51,12 +51,26 @@ public:
|
||||
// Disallow std::string conversion method to avoid locale-dependent encoding on windows.
|
||||
std::string string() const = delete;
|
||||
|
||||
std::string u8string() const
|
||||
{
|
||||
const auto& utf8_str{std::filesystem::path::u8string()};
|
||||
// utf8_str might either be std::string (C++17) or std::u8string
|
||||
// (C++20). Convert both to std::string. This method can be removed
|
||||
// after switching to C++20.
|
||||
return std::string{utf8_str.begin(), utf8_str.end()};
|
||||
}
|
||||
|
||||
// Required for path overloads in <fstream>.
|
||||
// See https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=96e0367ead5d8dcac3bec2865582e76e2fbab190
|
||||
path& make_preferred() { std::filesystem::path::make_preferred(); return *this; }
|
||||
path filename() const { return std::filesystem::path::filename(); }
|
||||
};
|
||||
|
||||
static inline path u8path(const std::string& utf8_str)
|
||||
{
|
||||
return std::filesystem::u8path(utf8_str);
|
||||
}
|
||||
|
||||
// Disallow implicit std::string conversion for absolute to avoid
|
||||
// locale-dependent encoding on windows.
|
||||
static inline path absolute(const path& p)
|
||||
@ -116,8 +130,8 @@ static inline std::string PathToString(const path& path)
|
||||
// use here, because these methods encode the path using C++'s narrow
|
||||
// multibyte encoding, which on Windows corresponds to the current "code
|
||||
// page", which is unpredictable and typically not able to represent all
|
||||
// valid paths. So std::filesystem::path::u8string() and
|
||||
// std::filesystem::u8path() functions are used instead on Windows. On
|
||||
// valid paths. So fs::path::u8string() and
|
||||
// fs::u8path() functions are used instead on Windows. On
|
||||
// POSIX, u8string/u8path functions are not safe to use because paths are
|
||||
// not always valid UTF-8, so plain string methods which do not transform
|
||||
// the path there are used.
|
||||
|
@ -109,7 +109,7 @@ static void Repeat(CScheduler& s, CScheduler::Function f, std::chrono::milliseco
|
||||
|
||||
void CScheduler::scheduleEvery(CScheduler::Function f, std::chrono::milliseconds delta)
|
||||
{
|
||||
scheduleFromNow([=] { Repeat(*this, f, delta); }, delta);
|
||||
scheduleFromNow([this, f, delta] { Repeat(*this, f, delta); }, delta);
|
||||
}
|
||||
|
||||
size_t CScheduler::getQueueInfo(std::chrono::system_clock::time_point& first,
|
||||
|
Loading…
Reference in New Issue
Block a user