From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../testsuite/18_support/numeric_limits/min_max.cc | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc (limited to 'libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc') diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc new file mode 100644 index 000000000..ba2a9f61e --- /dev/null +++ b/libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc @@ -0,0 +1,93 @@ +// { dg-add-options ieee } + +// 1999-08-23 bkoz + +// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// 18.2.1.1 template class numeric_limits + +#include +#include +#include +#include +#include + +template +struct extrema { + static T min; + static T max; +}; + + +#define DEFINE_EXTREMA(T, m, M) \ + template<> T extrema::min = m; \ + template<> T extrema::max = M + +DEFINE_EXTREMA(char, CHAR_MIN, CHAR_MAX); +DEFINE_EXTREMA(signed char, SCHAR_MIN, SCHAR_MAX); +DEFINE_EXTREMA(unsigned char, 0, UCHAR_MAX); +DEFINE_EXTREMA(short, SHRT_MIN, SHRT_MAX); +DEFINE_EXTREMA(unsigned short, 0, USHRT_MAX); +DEFINE_EXTREMA(int, INT_MIN, INT_MAX); +DEFINE_EXTREMA(unsigned, 0U, UINT_MAX); +DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX); +DEFINE_EXTREMA(unsigned long, 0UL, ULONG_MAX); + +#if _GLIBCXX_USE_WCHAR_T +DEFINE_EXTREMA(wchar_t, WCHAR_MIN, WCHAR_MAX); +#endif //_GLIBCXX_USE_WCHAR_T + +DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX); +DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX); +DEFINE_EXTREMA(long double, LDBL_MIN, LDBL_MAX); + +#undef DEFINE_EXTREMA + +template +void test_extrema() +{ + bool test __attribute__((unused)) = true; + T limits_min = std::numeric_limits::min(); + T limits_max = std::numeric_limits::max(); + T extrema_min = extrema::min; + T extrema_max = extrema::max; + VERIFY( extrema_min == limits_min ); + VERIFY( extrema_max == limits_max ); +} + +int main() +{ + test_extrema(); + test_extrema(); + test_extrema(); + + test_extrema(); + test_extrema(); + + test_extrema(); + test_extrema(); + + test_extrema(); + test_extrema(); + + test_extrema(); + test_extrema(); + test_extrema(); + + return 0; +} -- cgit v1.2.3