• Home
  • Raw
  • Download

Lines Matching refs:Dst

147 template <typename Dst,
149 IntegerRepresentation DstSign = std::is_signed<Dst>::value
159 template <typename Dst, typename Src, IntegerRepresentation Sign>
160 struct StaticDstRangeRelationToSrcRange<Dst, Src, Sign, Sign> {
162 MaxExponent<Dst>::value >= MaxExponent<Src>::value
169 template <typename Dst, typename Src>
170 struct StaticDstRangeRelationToSrcRange<Dst,
175 MaxExponent<Dst>::value > MaxExponent<Src>::value
181 template <typename Dst, typename Src>
182 struct StaticDstRangeRelationToSrcRange<Dst,
238 template <typename Dst, typename Src, template <typename> class Bounds>
241 using DstLimits = typename std::numeric_limits<Dst>;
245 (MaxExponent<Src>::value > MaxExponent<Dst>::value &&
256 static_assert(std::is_same<T, Dst>::value, "");
267 static_assert(std::is_same<T, Dst>::value, "");
272 static constexpr Dst max() { return Adjust(Bounds<Dst>::max()); }
273 static constexpr Dst lowest() { return Adjust(Bounds<Dst>::lowest()); }
276 template <typename Dst,
280 IntegerRepresentation DstSign = std::is_signed<Dst>::value
287 StaticDstRangeRelationToSrcRange<Dst, Src>::value>
295 template <typename Dst,
301 struct DstRangeRelationToSrcRangeImpl<Dst,
309 using DstLimits = NarrowingRange<Dst, Src, Bounds>;
311 static_cast<Dst>(SrcLimits::lowest()) >= DstLimits::lowest() ||
312 static_cast<Dst>(value) >= DstLimits::lowest(),
313 static_cast<Dst>(SrcLimits::max()) <= DstLimits::max() ||
314 static_cast<Dst>(value) <= DstLimits::max());
320 template <typename Dst, typename Src, template <typename> class Bounds>
321 struct DstRangeRelationToSrcRangeImpl<Dst,
328 using DstLimits = NarrowingRange<Dst, Src, Bounds>;
335 template <typename Dst, typename Src, template <typename> class Bounds>
336 struct DstRangeRelationToSrcRangeImpl<Dst,
343 using DstLimits = NarrowingRange<Dst, Src, Bounds>;
345 DstLimits::lowest() == Dst(0) || value >= DstLimits::lowest(),
351 template <typename Dst, typename Src, template <typename> class Bounds>
352 struct DstRangeRelationToSrcRangeImpl<Dst,
359 using DstLimits = NarrowingRange<Dst, Src, Bounds>;
360 using Promotion = decltype(Src() + Dst());
361 return RangeCheck(DstLimits::lowest() <= Dst(0) ||
371 template <typename Dst, typename Src, template <typename> class Bounds>
372 struct DstRangeRelationToSrcRangeImpl<Dst,
380 using DstLimits = NarrowingRange<Dst, Src, Bounds>;
381 using Promotion = decltype(Src() + Dst());
384 static_cast<Dst>(value) >= DstLimits::lowest()),
393 template <typename Dst, typename Src>
395 static const bool value = StaticDstRangeRelationToSrcRange<Dst, Src>::value ==
399 template <typename Dst,
404 static_assert(std::is_arithmetic<Dst>::value, "Result must be numeric.");
405 static_assert(Bounds<Dst>::lowest() < Bounds<Dst>::max(), "");
406 return DstRangeRelationToSrcRangeImpl<Dst, Src, Bounds>::Check(value);
811 template <typename Dst, typename Src>
813 return IsGreaterOrEqual<Dst, Src>::Test(std::numeric_limits<Dst>::max(),
817 template <typename Dst, typename Src>
819 return IsLessOrEqual<Dst, Src>::Test(std::numeric_limits<Dst>::lowest(),
823 template <typename Dst, typename Src>
824 constexpr Dst CommonMax() {
825 return !IsMaxInRangeForNumericType<Dst, Src>()
826 ? Dst(std::numeric_limits<Dst>::max())
827 : Dst(std::numeric_limits<Src>::max());
830 template <typename Dst, typename Src>
831 constexpr Dst CommonMin() {
832 return !IsMinInRangeForNumericType<Dst, Src>()
833 ? Dst(std::numeric_limits<Dst>::lowest())
834 : Dst(std::numeric_limits<Src>::lowest());
840 template <typename Dst, typename Src = Dst>
841 constexpr Dst CommonMaxOrMin(bool is_min) {
842 return is_min ? CommonMin<Dst, Src>() : CommonMax<Dst, Src>();