12 T minv = numeric_limits<T>::min();
13 T maxv = numeric_limits<T>::max();
15 ostringstream miniss, maxiss;
16 assert(miniss << minv);
17 assert(maxiss << maxv);
18 std::string mins = miniss.str();
19 std::string maxs = maxiss.str();
21 istringstream maxoss(maxs), minoss(mins);
24 assert(maxoss >> new_maxv);
25 assert(minoss >> new_minv);
27 assert(new_minv == minv);
28 assert(new_maxv == maxv);
33 mins[mins.size() - 1]++;
35 maxs[maxs.size() - 1]++;
37 istringstream maxoss2(maxs), minoss2(mins);
39 assert(! (maxoss2 >> new_maxv));
40 assert(! (minoss2 >> new_minv));
45 check_limits<short>();
46 check_limits<unsigned short>();
48 check_limits<unsigned int>();
50 check_limits<unsigned long>();
51 check_limits<long long>();
52 check_limits<unsigned long long>();