1// Copyright (C) 2012 Vicente J. Botet Escriba
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef BOOST_THREAD_DETAIL_DELETE_HPP
7#define BOOST_THREAD_DETAIL_DELETE_HPP
8
9#include <boost/config.hpp>
10
11/**
12 * BOOST_THREAD_DELETE_COPY_CTOR deletes the copy constructor when the compiler supports it or
13 * makes it private.
14 *
15 * BOOST_THREAD_DELETE_COPY_ASSIGN deletes the copy assignment when the compiler supports it or
16 * makes it private.
17 */
18
19#if ! defined BOOST_NO_CXX11_DELETED_FUNCTIONS && ! defined BOOST_NO_CXX11_RVALUE_REFERENCES
20#define BOOST_THREAD_DELETE_COPY_CTOR(CLASS) \
21 CLASS(CLASS const&) = delete; \
22
23#define BOOST_THREAD_DELETE_COPY_ASSIGN(CLASS) \
24 CLASS& operator=(CLASS const&) = delete;
25
26#else // BOOST_NO_CXX11_DELETED_FUNCTIONS
27#if defined(BOOST_MSVC) && _MSC_VER >= 1600
28#define BOOST_THREAD_DELETE_COPY_CTOR(CLASS) \
29 private: \
30 CLASS(CLASS const&); \
31 public:
32
33#define BOOST_THREAD_DELETE_COPY_ASSIGN(CLASS) \
34 private: \
35 CLASS& operator=(CLASS const&); \
36 public:
37#else
38#define BOOST_THREAD_DELETE_COPY_CTOR(CLASS) \
39 private: \
40 CLASS(CLASS&); \
41 public:
42
43#define BOOST_THREAD_DELETE_COPY_ASSIGN(CLASS) \
44 private: \
45 CLASS& operator=(CLASS&); \
46 public:
47#endif
48#endif // BOOST_NO_CXX11_DELETED_FUNCTIONS
49
50/**
51 * BOOST_THREAD_NO_COPYABLE deletes the copy constructor and assignment when the compiler supports it or
52 * makes them private.
53 */
54#define BOOST_THREAD_NO_COPYABLE(CLASS) \
55 BOOST_THREAD_DELETE_COPY_CTOR(CLASS) \
56 BOOST_THREAD_DELETE_COPY_ASSIGN(CLASS)
57
58#endif // BOOST_THREAD_DETAIL_DELETE_HPP
59