template <typename D, typename S> static constexpr inline typename std::enable_if<(std::is_integral<S>::value || std::is_enum<S>::value) &&
(std::is_integral<D>::value || std::is_enum<D>::value), bool>::type /*bool*/ SkTFitsIn(S src) { // Ensure that is_signed and is_unsigned are passed the arithmetic underlyng types of enums. using Sa = typename sk_strip_enum<S>::type; using Da = typename sk_strip_enum<D>::type;
// SkTFitsIn() is used in public headers, so needs to be written targeting at most C++11. return
// E.g. (int8_t)(uint8_t) int8_t(-1) == -1, but the uint8_t == 255, not -1.
(std::is_signed<Sa>::value && std::is_unsigned<Da>::value && sizeof(Sa) <= sizeof(Da)) ?
(S)0 <= src :
// E.g. (uint8_t)(int8_t) uint8_t(255) == 255, but the int8_t == -1.
(std::is_signed<Da>::value && std::is_unsigned<Sa>::value && sizeof(Da) <= sizeof(Sa)) ?
src <= (S)std::numeric_limits<Da>::max() :
// This trips up MSVC's /RTCc run-time checking, which we don't support.
(S)(D)src == src;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.