[libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible loss of data", part 3/7.

Add static_cast<short> when constructing pair<Whatever, short> from (Something, int).

Fixes D27540.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@289107 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Stephan T. Lavavej
2016-12-08 21:38:14 +00:00
parent 637a6f6005
commit f008c5389e
16 changed files with 60 additions and 60 deletions

View File

@@ -37,22 +37,22 @@ int main()
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
C::const_iterator e = c.end(); C::const_iterator e = c.end();
R r = c.insert(e, P(3.5, 3)); R r = c.insert(e, P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(c.end(), P(3.5, 4)); r = c.insert(c.end(), P(3.5, static_cast<short>(4)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(c.end(), P(4.5, 4)); r = c.insert(c.end(), P(4.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(5.5, 4)); r = c.insert(c.end(), P(5.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);
@@ -90,22 +90,22 @@ int main()
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
C::const_iterator e = c.end(); C::const_iterator e = c.end();
R r = c.insert(e, P(3.5, 3)); R r = c.insert(e, P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(c.end(), P(3.5, 4)); r = c.insert(c.end(), P(3.5, static_cast<short>(4)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(c.end(), P(4.5, 4)); r = c.insert(c.end(), P(4.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(5.5, 4)); r = c.insert(c.end(), P(5.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);

View File

@@ -32,25 +32,25 @@ int main()
typedef std::pair<C::iterator, bool> R; typedef std::pair<C::iterator, bool> R;
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
R r = c.insert(P(3.5, 3)); R r = c.insert(P(3.5, static_cast<short>(3)));
assert(r.second); assert(r.second);
assert(c.size() == 1); assert(c.size() == 1);
assert(r.first->first == 3.5); assert(r.first->first == 3.5);
assert(r.first->second == 3); assert(r.first->second == 3);
r = c.insert(P(3.5, 4)); r = c.insert(P(3.5, static_cast<short>(4)));
assert(!r.second); assert(!r.second);
assert(c.size() == 1); assert(c.size() == 1);
assert(r.first->first == 3.5); assert(r.first->first == 3.5);
assert(r.first->second == 3); assert(r.first->second == 3);
r = c.insert(P(4.5, 4)); r = c.insert(P(4.5, static_cast<short>(4)));
assert(r.second); assert(r.second);
assert(c.size() == 2); assert(c.size() == 2);
assert(r.first->first == 4.5); assert(r.first->first == 4.5);
assert(r.first->second == 4); assert(r.first->second == 4);
r = c.insert(P(5.5, 4)); r = c.insert(P(5.5, static_cast<short>(4)));
assert(r.second); assert(r.second);
assert(c.size() == 3); assert(c.size() == 3);
assert(r.first->first == 5.5); assert(r.first->first == 5.5);
@@ -91,25 +91,25 @@ int main()
typedef std::pair<C::iterator, bool> R; typedef std::pair<C::iterator, bool> R;
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
R r = c.insert(P(3.5, 3)); R r = c.insert(P(3.5, static_cast<short>(3)));
assert(r.second); assert(r.second);
assert(c.size() == 1); assert(c.size() == 1);
assert(r.first->first == 3.5); assert(r.first->first == 3.5);
assert(r.first->second == 3); assert(r.first->second == 3);
r = c.insert(P(3.5, 4)); r = c.insert(P(3.5, static_cast<short>(4)));
assert(!r.second); assert(!r.second);
assert(c.size() == 1); assert(c.size() == 1);
assert(r.first->first == 3.5); assert(r.first->first == 3.5);
assert(r.first->second == 3); assert(r.first->second == 3);
r = c.insert(P(4.5, 4)); r = c.insert(P(4.5, static_cast<short>(4)));
assert(r.second); assert(r.second);
assert(c.size() == 2); assert(c.size() == 2);
assert(r.first->first == 4.5); assert(r.first->first == 4.5);
assert(r.first->second == 4); assert(r.first->second == 4);
r = c.insert(P(5.5, 4)); r = c.insert(P(5.5, static_cast<short>(4)));
assert(r.second); assert(r.second);
assert(c.size() == 3); assert(c.size() == 3);
assert(r.first->first == 5.5); assert(r.first->first == 5.5);

View File

@@ -37,22 +37,22 @@ int main()
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
C::const_iterator e = c.end(); C::const_iterator e = c.end();
R r = c.insert(e, P(3.5, 3)); R r = c.insert(e, P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(r, P(3.5, 4)); r = c.insert(r, P(3.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(4.5, 4)); r = c.insert(c.end(), P(4.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(5.5, 4)); r = c.insert(c.end(), P(5.5, static_cast<short>(4)));
assert(c.size() == 4); assert(c.size() == 4);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);
@@ -90,22 +90,22 @@ int main()
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
C::const_iterator e = c.end(); C::const_iterator e = c.end();
R r = c.insert(e, P(3.5, 3)); R r = c.insert(e, P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(r, P(3.5, 4)); r = c.insert(r, P(3.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(4.5, 4)); r = c.insert(c.end(), P(4.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(c.end(), P(5.5, 4)); r = c.insert(c.end(), P(5.5, static_cast<short>(4)));
assert(c.size() == 4); assert(c.size() == 4);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);

View File

@@ -32,22 +32,22 @@ int main()
typedef C::iterator R; typedef C::iterator R;
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
R r = c.insert(P(3.5, 3)); R r = c.insert(P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(P(3.5, 4)); r = c.insert(P(3.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(P(4.5, 4)); r = c.insert(P(4.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(P(5.5, 4)); r = c.insert(P(5.5, static_cast<short>(4)));
assert(c.size() == 4); assert(c.size() == 4);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);
@@ -83,22 +83,22 @@ int main()
typedef C::iterator R; typedef C::iterator R;
typedef std::pair<double, short> P; typedef std::pair<double, short> P;
C c; C c;
R r = c.insert(P(3.5, 3)); R r = c.insert(P(3.5, static_cast<short>(3)));
assert(c.size() == 1); assert(c.size() == 1);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 3); assert(r->second == 3);
r = c.insert(P(3.5, 4)); r = c.insert(P(3.5, static_cast<short>(4)));
assert(c.size() == 2); assert(c.size() == 2);
assert(r->first == 3.5); assert(r->first == 3.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(P(4.5, 4)); r = c.insert(P(4.5, static_cast<short>(4)));
assert(c.size() == 3); assert(c.size() == 3);
assert(r->first == 4.5); assert(r->first == 4.5);
assert(r->second == 4); assert(r->second == 4);
r = c.insert(P(5.5, 4)); r = c.insert(P(5.5, static_cast<short>(4)));
assert(c.size() == 4); assert(c.size() == 4);
assert(r->first == 5.5); assert(r->first == 5.5);
assert(r->second == 4); assert(r->second == 4);

View File

@@ -24,7 +24,7 @@ int main()
{ {
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
const P p(3, 4); const P p(3, static_cast<short>(4));
assert(std::get<0>(p) == 3); assert(std::get<0>(p) == 3);
assert(std::get<1>(p) == 4); assert(std::get<1>(p) == 4);
} }
@@ -32,7 +32,7 @@ int main()
#if TEST_STD_VER > 11 #if TEST_STD_VER > 11
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
constexpr P p1(3, 4); constexpr P p1(3, static_cast<short>(4));
static_assert(std::get<0>(p1) == 3, ""); static_assert(std::get<0>(p1) == 3, "");
static_assert(std::get<1>(p1) == 4, ""); static_assert(std::get<1>(p1) == 4, "");
} }

View File

@@ -28,7 +28,7 @@ int main()
{ {
{ {
typedef std::pair<std::unique_ptr<int>, short> P; typedef std::pair<std::unique_ptr<int>, short> P;
const P p(std::unique_ptr<int>(new int(3)), 4); const P p(std::unique_ptr<int>(new int(3)), static_cast<short>(4));
static_assert(std::is_same<const std::unique_ptr<int>&&, decltype(std::get<0>(std::move(p)))>::value, ""); static_assert(std::is_same<const std::unique_ptr<int>&&, decltype(std::get<0>(std::move(p)))>::value, "");
static_assert(noexcept(std::get<0>(std::move(p))), ""); static_assert(noexcept(std::get<0>(std::move(p))), "");
const std::unique_ptr<int>&& ptr = std::get<0>(std::move(p)); const std::unique_ptr<int>&& ptr = std::get<0>(std::move(p));
@@ -58,7 +58,7 @@ int main()
#if TEST_STD_VER > 11 #if TEST_STD_VER > 11
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
constexpr const P p1(3, 4); constexpr const P p1(3, static_cast<short>(4));
static_assert(std::get<0>(std::move(p1)) == 3, ""); static_assert(std::get<0>(std::move(p1)) == 3, "");
static_assert(std::get<1>(std::move(p1)) == 4, ""); static_assert(std::get<1>(std::move(p1)) == 4, "");
} }

View File

@@ -34,7 +34,7 @@ int main()
{ {
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p(3, 4); P p(3, static_cast<short>(4));
assert(std::get<0>(p) == 3); assert(std::get<0>(p) == 3);
assert(std::get<1>(p) == 4); assert(std::get<1>(p) == 4);
std::get<0>(p) = 5; std::get<0>(p) = 5;

View File

@@ -25,7 +25,7 @@ int main()
{ {
{ {
typedef std::pair<std::unique_ptr<int>, short> P; typedef std::pair<std::unique_ptr<int>, short> P;
P p(std::unique_ptr<int>(new int(3)), 4); P p(std::unique_ptr<int>(new int(3)), static_cast<short>(4));
std::unique_ptr<int> ptr = std::get<0>(std::move(p)); std::unique_ptr<int> ptr = std::get<0>(std::move(p));
assert(*ptr == 3); assert(*ptr == 3);
} }

View File

@@ -21,7 +21,7 @@ int main()
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
typedef std::pair<double, long> P2; typedef std::pair<double, long> P2;
P1 p1(3, 4); P1 p1(3, static_cast<short>(4));
P2 p2; P2 p2;
p2 = p1; p2 = p1;
assert(p2.first == 3); assert(p2.first == 3);

View File

@@ -34,7 +34,7 @@ int main()
{ {
typedef std::pair<std::unique_ptr<Derived>, short> P1; typedef std::pair<std::unique_ptr<Derived>, short> P1;
typedef std::pair<std::unique_ptr<Base>, long> P2; typedef std::pair<std::unique_ptr<Base>, long> P2;
P1 p1(std::unique_ptr<Derived>(), 4); P1 p1(std::unique_ptr<Derived>(), static_cast<short>(4));
P2 p2; P2 p2;
p2 = std::move(p1); p2 = std::move(p1);
assert(p2.first == nullptr); assert(p2.first == nullptr);

View File

@@ -21,7 +21,7 @@ int main()
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
typedef std::pair<double, long> P2; typedef std::pair<double, long> P2;
const P1 p1(3, 4); const P1 p1(3, static_cast<short>(4));
const P2 p2 = p1; const P2 p2 = p1;
assert(p2.first == 3); assert(p2.first == 3);
assert(p2.second == 4); assert(p2.second == 4);

View File

@@ -22,7 +22,7 @@ int main()
{ {
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
P1 p1(3, 4); P1 p1(3, static_cast<short>(4));
P1 p2 = p1; P1 p2 = p1;
assert(p2.first == 3); assert(p2.first == 3);
assert(p2.second == 4); assert(p2.second == 4);
@@ -30,7 +30,7 @@ int main()
#if TEST_STD_VER > 11 #if TEST_STD_VER > 11
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
constexpr P1 p1(3, 4); constexpr P1 p1(3, static_cast<short>(4));
constexpr P1 p2 = p1; constexpr P1 p2 = p1;
static_assert(p2.first == 3, ""); static_assert(p2.first == 3, "");
static_assert(p2.second == 4, ""); static_assert(p2.second == 4, "");

View File

@@ -31,7 +31,7 @@ int main()
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
static_assert(std::is_move_constructible<P1>::value, ""); static_assert(std::is_move_constructible<P1>::value, "");
P1 p1(3, 4); P1 p1(3, static_cast<short>(4));
P1 p2 = std::move(p1); P1 p2 = std::move(p1);
assert(p2.first == 3); assert(p2.first == 3);
assert(p2.second == 4); assert(p2.second == 4);

View File

@@ -29,8 +29,8 @@ int main()
{ {
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
P1 p1(3, 4); P1 p1(3, static_cast<short>(4));
P1 p2(5, 6); P1 p2(5, static_cast<short>(6));
p1.swap(p2); p1.swap(p2);
assert(p1.first == 5); assert(p1.first == 5);
assert(p1.second == 6); assert(p1.second == 6);

View File

@@ -27,8 +27,8 @@ int main()
{ {
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p1(3, 4); P p1(3, static_cast<short>(4));
P p2(3, 4); P p2(3, static_cast<short>(4));
assert( (p1 == p2)); assert( (p1 == p2));
assert(!(p1 != p2)); assert(!(p1 != p2));
assert(!(p1 < p2)); assert(!(p1 < p2));
@@ -38,8 +38,8 @@ int main()
} }
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p1(2, 4); P p1(2, static_cast<short>(4));
P p2(3, 4); P p2(3, static_cast<short>(4));
assert(!(p1 == p2)); assert(!(p1 == p2));
assert( (p1 != p2)); assert( (p1 != p2));
assert( (p1 < p2)); assert( (p1 < p2));
@@ -49,8 +49,8 @@ int main()
} }
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p1(3, 2); P p1(3, static_cast<short>(2));
P p2(3, 4); P p2(3, static_cast<short>(4));
assert(!(p1 == p2)); assert(!(p1 == p2));
assert( (p1 != p2)); assert( (p1 != p2));
assert( (p1 < p2)); assert( (p1 < p2));
@@ -60,8 +60,8 @@ int main()
} }
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p1(3, 4); P p1(3, static_cast<short>(4));
P p2(2, 4); P p2(2, static_cast<short>(4));
assert(!(p1 == p2)); assert(!(p1 == p2));
assert( (p1 != p2)); assert( (p1 != p2));
assert(!(p1 < p2)); assert(!(p1 < p2));
@@ -71,8 +71,8 @@ int main()
} }
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
P p1(3, 4); P p1(3, static_cast<short>(4));
P p2(3, 2); P p2(3, static_cast<short>(2));
assert(!(p1 == p2)); assert(!(p1 == p2));
assert( (p1 != p2)); assert( (p1 != p2));
assert(!(p1 < p2)); assert(!(p1 < p2));
@@ -84,8 +84,8 @@ int main()
#if TEST_STD_VER > 11 #if TEST_STD_VER > 11
{ {
typedef std::pair<int, short> P; typedef std::pair<int, short> P;
constexpr P p1(3, 4); constexpr P p1(3, static_cast<short>(4));
constexpr P p2(3, 2); constexpr P p2(3, static_cast<short>(2));
static_assert(!(p1 == p2), ""); static_assert(!(p1 == p2), "");
static_assert( (p1 != p2), ""); static_assert( (p1 != p2), "");
static_assert(!(p1 < p2), ""); static_assert(!(p1 < p2), "");

View File

@@ -20,8 +20,8 @@ int main()
{ {
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, short> P1;
P1 p1(3, 4); P1 p1(3, static_cast<short>(4));
P1 p2(5, 6); P1 p2(5, static_cast<short>(6));
swap(p1, p2); swap(p1, p2);
assert(p1.first == 5); assert(p1.first == 5);
assert(p1.second == 6); assert(p1.second == 6);