Fix a handful of tests that fail in C++03

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@243392 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2015-07-28 07:31:50 +00:00
parent bfb46e486d
commit b47a434d60
8 changed files with 35 additions and 35 deletions

View File

@@ -15,6 +15,7 @@
#include <memory>
#include <cassert>
#include "test_macros.h"
#include "count_new.hpp"
int A_constructed = 0;
@@ -34,30 +35,22 @@ struct A
int move_only_constructed = 0;
#if TEST_STD_VER >= 11
class move_only
{
int data;
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
move_only(const move_only&);
move_only& operator=(const move_only&);
#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
move_only(move_only&);
move_only& operator=(move_only&);
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
move_only(const move_only&) = delete;
move_only& operator=(const move_only&)= delete;
public:
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
move_only(move_only&&) {++move_only_constructed;}
move_only& operator=(move_only&&) {return *this;}
#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
operator std::__rv<move_only> () {return std::__rv<move_only>(*this);}
move_only(std::__rv<move_only>) {++move_only_constructed;}
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
move_only() {++move_only_constructed;}
~move_only() {--move_only_constructed;}
};
#endif // TEST_STD_VER >= 11
int main()
{
@@ -108,6 +101,7 @@ int main()
assert(globalMemCounter.checkOutstandingNewEq(0));
assert(A_constructed == 0);
}
#if TEST_STD_VER >= 11
{
std::allocator<move_only> a;
assert(globalMemCounter.checkOutstandingNewEq(0));
@@ -139,4 +133,5 @@ int main()
assert(globalMemCounter.checkOutstandingNewEq(0));
assert(move_only_constructed == 0);
}
#endif
}