🔥 conditional_cast

This commit is contained in:
Vladislav Nepogodin 2021-12-19 21:37:21 +04:00
parent f81cb9f365
commit f096c615c3
No known key found for this signature in database
GPG Key ID: B62C3D10C54D5DA9
2 changed files with 18 additions and 4 deletions

View File

@ -320,6 +320,20 @@ struct file_event_handlers
};
namespace details {
// to avoid useless casts (see https://github.com/nlohmann/json/issues/2893#issuecomment-889152324)
template<typename T, typename U, std::enable_if_t<!std::is_same<T, U>::value, int> = 0>
constexpr T conditional_static_cast(U value)
{
return static_cast<T>(value);
}
template<typename T, typename U, std::enable_if_t<std::is_same<T, U>::value, int> = 0>
constexpr T conditional_static_cast(U value)
{
return value;
}
// make_unique support for pre c++14
#if __cplusplus >= 201402L // C++14 and beyond

View File

@ -405,9 +405,9 @@ SPDLOG_INLINE int pid() SPDLOG_NOEXCEPT
{
#ifdef _WIN32
return static_cast<int>(::GetCurrentProcessId());
return conditional_static_cast<int>(::GetCurrentProcessId());
#else
return static_cast<int>(::getpid());
return conditional_static_cast<int>(::getpid());
#endif
}