Program Listing for File common_signed_t.hpp¶
↰ Return to documentation for file (include/uitsl/meta/common_signed_t.hpp)
#pragma once
#ifndef UITSL_META_COMMON_SIGNED_T_HPP_INCLUDE
#define UITSL_META_COMMON_SIGNED_T_HPP_INCLUDE
// adapted from https://stackoverflow.com/a/63436491
#include <type_traits>
namespace uitsl {
template <typename A, typename B>
using common_signed_t = std::conditional_t<
std::is_unsigned_v<A> && std::is_unsigned_v<B>,
std::common_type_t<A, B>,
std::common_type_t<std::make_signed_t<A>, std::make_signed_t<B>>
>;
} // namespace uitsl
#endif // #ifndef UITSL_META_COMMON_SIGNED_T_HPP_INCLUDE