#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include "test_macros.h"
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include "test_macros.h"
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include "test_macros.h"
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct IncompleteT;
}
template <class Del>
-StoresIncomplete<Del>::~StoresIncomplete() { }
\ No newline at end of file
+StoresIncomplete<Del>::~StoresIncomplete() { }
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
//=============================================================================
// TESTING unique_ptr(unique_ptr&&)
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
// test converting move ctor. Should only require a MoveConstructible deleter, or if
// deleter is a reference, not even that.
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <utility>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
// test converting move ctor. Should only require a MoveConstructible deleter, or if
// deleter is a reference, not even that.
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
// unique_ptr(pointer) ctor should only require default Deleter ctor
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
#include <cassert>
#include "test_macros.h"
-#include "../deleter.h"
+#include "deleter_types.h"
struct A
{
+++ /dev/null
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <memory>
-
-// shared_ptr
-
-// Example move-only deleter
-
-#ifndef DELETER_H
-#define DELETER_H
-
-#include <type_traits>
-#include <cassert>
-
-#include "test_macros.h"
-
-#if TEST_STD_VER >= 11
-#define DELETE_FUNCTION = delete
-#else
-#define DELETE_FUNCTION { assert(false); }
-#endif
-
-struct test_deleter_base
-{
- static int count;
- static int dealloc_count;
-};
-
-int test_deleter_base::count = 0;
-int test_deleter_base::dealloc_count = 0;
-
-template <class T>
-class test_deleter
- : public test_deleter_base
-{
- int state_;
-
-public:
-
- test_deleter() : state_(0) {++count;}
- explicit test_deleter(int s) : state_(s) {++count;}
- test_deleter(const test_deleter& d)
- : state_(d.state_) {++count;}
- ~test_deleter() {assert(state_ >= 0); --count; state_ = -1;}
-
- int state() const {return state_;}
- void set_state(int i) {state_ = i;}
-
- void operator()(T* p) {assert(state_ >= 0); ++dealloc_count; delete p;}
-
- test_deleter* operator&() const DELETE_FUNCTION;
-};
-
-template <class T>
-void
-swap(test_deleter<T>& x, test_deleter<T>& y)
-{
- test_deleter<T> t(std::move(x));
- x = std::move(y);
- y = std::move(t);
-}
-
-#endif // DELETER_H
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
#include "test_allocator.h"
#include "min_allocator.h"
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
#include "test_allocator.h"
struct A
#include "test_macros.h"
#include "count_new.hpp"
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
#include "test_allocator.h"
#include "min_allocator.h"
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
#include "test_allocator.h"
struct A
#include <cstdlib>
#include "count_new.hpp"
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct A
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
struct B
{
#include <memory>
#include <cassert>
-#include "../test_deleter.h"
+#include "deleter_types.h"
#include "test_allocator.h"
struct B
// Example move-only deleter
-#ifndef DELETER_H
-#define DELETER_H
+#ifndef SUPPORT_DELETER_TYPES_H
+#define SUPPORT_DELETER_TYPES_H
#include <type_traits>
#include <utility>
};
-#endif // DELETER_H
+struct test_deleter_base
+{
+ static int count;
+ static int dealloc_count;
+};
+
+int test_deleter_base::count = 0;
+int test_deleter_base::dealloc_count = 0;
+
+template <class T>
+class test_deleter
+ : public test_deleter_base
+{
+ int state_;
+
+public:
+
+ test_deleter() : state_(0) {++count;}
+ explicit test_deleter(int s) : state_(s) {++count;}
+ test_deleter(const test_deleter& d)
+ : state_(d.state_) {++count;}
+ ~test_deleter() {assert(state_ >= 0); --count; state_ = -1;}
+
+ int state() const {return state_;}
+ void set_state(int i) {state_ = i;}
+
+ void operator()(T* p) {assert(state_ >= 0); ++dealloc_count; delete p;}
+#if TEST_STD_VER >= 11
+ test_deleter* operator&() const = delete;
+#else
+private:
+ test_deleter* operator&() const;
+#endif
+};
+
+template <class T>
+void
+swap(test_deleter<T>& x, test_deleter<T>& y)
+{
+ test_deleter<T> t(std::move(x));
+ x = std::move(y);
+ y = std::move(t);
+}
+
+#endif // SUPPORT_DELETER_TYPES_H
#endif
#endif
-
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif