forked from OSchip/llvm-project
[libcxx] [test] Avoid MSVC truncation warnings.
MSVC emits "warning C4244: 'initializing': conversion from 'int' to 'short', possible loss of data" when it sees pair<Whatever, short> constructed from (whatever, 4), because int is being truncated to short within pair's constructor. (The compiler doesn't take into account the fact that 4 is a literal at the callsite; it generates this warning when the constructor is instantiated, because it might be called with a runtime-valued int that would actually truncate.) Instead of static_cast<short>, we can simply change short to int in these tests, without affecting the pair operations that they're trying to test: move assignment, convert copy construction, and convert move construction. Fixes D45016. llvm-svn: 329973
This commit is contained in:
parent
0c8ee891a7
commit
0f66190aef
|
@ -49,7 +49,7 @@ int CountAssign::moved = 0;
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
typedef std::pair<std::unique_ptr<int>, short> P;
|
typedef std::pair<std::unique_ptr<int>, int> P;
|
||||||
P p1(std::unique_ptr<int>(new int(3)), 4);
|
P p1(std::unique_ptr<int>(new int(3)), 4);
|
||||||
P p2;
|
P p2;
|
||||||
p2 = std::move(p1);
|
p2 = std::move(p1);
|
||||||
|
|
|
@ -57,7 +57,7 @@ struct ImplicitT {
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
typedef std::pair<int, short> P1;
|
typedef std::pair<int, int> P1;
|
||||||
typedef std::pair<double, long> P2;
|
typedef std::pair<double, long> P2;
|
||||||
const P1 p1(3, 4);
|
const P1 p1(3, 4);
|
||||||
const P2 p2 = p1;
|
const P2 p2 = p1;
|
||||||
|
@ -154,7 +154,7 @@ int main()
|
||||||
}
|
}
|
||||||
#if TEST_STD_VER > 11
|
#if TEST_STD_VER > 11
|
||||||
{
|
{
|
||||||
typedef std::pair<int, short> P1;
|
typedef std::pair<int, int> P1;
|
||||||
typedef std::pair<double, long> P2;
|
typedef std::pair<double, long> P2;
|
||||||
constexpr P1 p1(3, 4);
|
constexpr P1 p1(3, 4);
|
||||||
constexpr P2 p2 = p1;
|
constexpr P2 p2 = p1;
|
||||||
|
|
|
@ -67,7 +67,7 @@ struct ImplicitT {
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
typedef std::pair<std::unique_ptr<Derived>, short> P1;
|
typedef std::pair<std::unique_ptr<Derived>, int> 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>(), 4);
|
||||||
P2 p2 = std::move(p1);
|
P2 p2 = std::move(p1);
|
||||||
|
|
Loading…
Reference in New Issue