Skip to content

Commit

Permalink
[libcxx] [test] D26815: Fix an assumption about the state of moved-fr…
Browse files Browse the repository at this point in the history
…om std::functions.

The Standard doesn't provide any guarantees beyond "valid but unspecified" for
moved-from std::functions. libcxx moves from small targets and leaves them
there, while MSVC's STL empties out the source. Mark these assertions as
libcxx-specific.

llvm-svn: 287382
  • Loading branch information
StephanTLavavej committed Nov 18, 2016
1 parent e57a2a3 commit b04c795
Showing 1 changed file with 2 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -132,7 +132,7 @@ int main()
assert(A::count == 1);
assert(f2.target<A>() == nullptr);
assert(f2.target<Ref>());
assert(f.target<Ref>()); // f is unchanged because the target is small
LIBCPP_ASSERT(f.target<Ref>()); // f is unchanged because the target is small
}
{
// Test that moving a function constructed from a function pointer
@@ -146,7 +146,7 @@ int main()
std::function<int(int)> f2(std::move(f));
assert(f2.target<A>() == nullptr);
assert(f2.target<Ptr>());
assert(f.target<Ptr>()); // f is unchanged because the target is small
LIBCPP_ASSERT(f.target<Ptr>()); // f is unchanged because the target is small
}
#endif // TEST_STD_VER >= 11
}

0 comments on commit b04c795

Please sign in to comment.