From 4d4665436e540bd2ca393c139cbaff1eabd62ee2 Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Wed, 13 Jun 2018 11:41:38 -0400 Subject: Reland "use std::enable_if instead of assert()" This is a reland of c6530d1e5ecce640e0255d66a01f9db73add7df9 Original change's description: > use std::enable_if instead of assert() > > Crazy? Genius? > > Change-Id: I6033ab5f1af1a6bee84c27025b988e1143d59293 > Reviewed-on: https://skia-review.googlesource.com/134512 > Commit-Queue: Mike Klein > Commit-Queue: Ben Wagner > Auto-Submit: Mike Klein > Reviewed-by: Ben Wagner Change-Id: I50849c89a37255396706ce659e20f00c0b0f08c6 Reviewed-on: https://skia-review.googlesource.com/134860 Reviewed-by: Mike Klein Commit-Queue: Mike Klein --- include/private/SkTFitsIn.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'include/private') diff --git a/include/private/SkTFitsIn.h b/include/private/SkTFitsIn.h index 9dcfdf3384..5fdf74383a 100644 --- a/include/private/SkTFitsIn.h +++ b/include/private/SkTFitsIn.h @@ -8,7 +8,6 @@ #ifndef SkTFitsIn_DEFINED #define SkTFitsIn_DEFINED -#include #include #include @@ -53,10 +52,12 @@ */ template -static constexpr inline bool SkTFitsIn(S src) { +static constexpr inline +typename std::enable_if<(std::is_integral::value || std::is_enum::value) && + (std::is_integral::value || std::is_enum::value), bool>::type +/*bool*/ SkTFitsIn(S src) { // SkTFitsIn() is used in public headers, so needs to be written targeting at most C++11. - return assert(std::is_integral::value || std::is_enum::value), - assert(std::is_integral::value || std::is_enum::value), + return // E.g. (int8_t)(uint8_t) int8_t(-1) == -1, but the uint8_t == 255, not -1. (std::is_signed::value && std::is_unsigned::value && sizeof(S) <= sizeof(D)) ? -- cgit v1.2.3