blob: ac6f259d1fb53e1cad00d8ada0782487e7d8b452 [file] [log] [blame]
Phil Nash5062d3e2013-04-16 22:55:31 +01001/*
2 * Created by Phil on 15/04/2013.
3 * Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
4 *
5 * Distributed under the Boost Software License, Version 1.0. (See accompanying
6 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 */
8#ifndef TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
9#define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
10
Phil Nashe86daf82015-05-19 18:37:58 +010011// Detect a number of compiler features - mostly C++11/14 conformance - by compiler
12// The following features are defined:
13//
14// CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported?
15// CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported?
16// CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods
17// CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported?
18// CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported
Phil Nash733ebb62015-07-23 19:03:33 +010019// CATCH_CONFIG_CPP11_LONG_LONG : is long long supported?
Phil Nash4cb74762015-08-05 19:02:17 +010020// CATCH_CONFIG_CPP11_OVERRIDE : is override supported?
Phil Nash40d0d2f2015-08-11 08:09:41 +010021// CATCH_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr)
Martin Hořeňovský60a9ac72017-01-26 18:47:29 +010022// CATCH_CONFIG_CPP11_SHUFFLE : is std::shuffle supported?
23// CATCH_CONFIG_CPP11_TYPE_TRAITS : are type_traits and enable_if supported?
Phil Nashe86daf82015-05-19 18:37:58 +010024
25// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported?
26
Phil Nashe86daf82015-05-19 18:37:58 +010027// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported?
Phil Nash13a887a2015-12-15 07:50:51 +000028// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported?
Martin Hořeňovskýe991c002017-02-06 01:43:53 +010029// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported?
Martin Hořeňovskýc6178602017-02-15 17:57:22 +010030// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported?
Phil Nash40d0d2f2015-08-11 08:09:41 +010031// ****************
32// Note to maintainers: if new toggles are added please document them
33// in configuration.md, too
34// ****************
Phil Nashe86daf82015-05-19 18:37:58 +010035
Phil Nash7ab3b5a2015-06-30 08:41:55 +010036// In general each macro has a _NO_<feature name> form
37// (e.g. CATCH_CONFIG_CPP11_NO_NULLPTR) which disables the feature.
38// Many features, at point of detection, define an _INTERNAL_ macro, so they
39// can be combined, en-mass, with the _NO_ forms later.
40
41// All the C++11 features can be disabled with CATCH_CONFIG_NO_CPP11
Phil Nash5062d3e2013-04-16 22:55:31 +010042
Phil Nashbe3570e2016-06-09 08:15:57 +010043#ifdef __cplusplus
44
45# if __cplusplus >= 201103L
46# define CATCH_CPP11_OR_GREATER
47# endif
48
49# if __cplusplus >= 201402L
50# define CATCH_CPP14_OR_GREATER
51# endif
52
Phil Nash91bfe682016-02-29 08:01:06 +000053#endif
54
Phil Nash563429d2013-12-14 14:32:26 +000055#ifdef __clang__
Phil Nash563429d2013-12-14 14:32:26 +000056
Phil Nash1a6f2a02014-04-23 18:19:19 +010057# if __has_feature(cxx_nullptr)
Phil Nash7ab3b5a2015-06-30 08:41:55 +010058# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
Phil Nash1a6f2a02014-04-23 18:19:19 +010059# endif
Phil Nash563429d2013-12-14 14:32:26 +000060
Phil Nash1a6f2a02014-04-23 18:19:19 +010061# if __has_feature(cxx_noexcept)
Phil Nash7ab3b5a2015-06-30 08:41:55 +010062# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
Phil Nash1a6f2a02014-04-23 18:19:19 +010063# endif
Phil Nash563429d2013-12-14 14:32:26 +000064
Phil Nash91bfe682016-02-29 08:01:06 +000065# if defined(CATCH_CPP11_OR_GREATER)
Martin Hořeňovskýc3a41e22017-03-29 20:30:59 +020066# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
67 _Pragma( "clang diagnostic push" ) \
68 _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" )
69# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \
70 _Pragma( "clang diagnostic pop" )
71
Phil Nashfe690a62017-02-15 09:38:38 +000072# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
73 _Pragma( "clang diagnostic push" ) \
74 _Pragma( "clang diagnostic ignored \"-Wparentheses\"" )
75# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \
76 _Pragma( "clang diagnostic pop" )
Phil Nash91bfe682016-02-29 08:01:06 +000077# endif
78
Phil Nash563429d2013-12-14 14:32:26 +000079#endif // __clang__
80
Martin Hořeňovskýc6178602017-02-15 17:57:22 +010081
82////////////////////////////////////////////////////////////////////////////////
Martin Hořeňovskýb95163b2017-04-20 21:02:25 +020083// We know some environments not to support full POSIX signals
84#if defined(__CYGWIN__) || defined(__QNX__)
Martin Hořeňovskýc6178602017-02-15 17:57:22 +010085
86# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
87# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
88# endif
89
Martin Hořeňovskýb95163b2017-04-20 21:02:25 +020090#endif
91
92
93////////////////////////////////////////////////////////////////////////////////
94// Cygwin
95#ifdef __CYGWIN__
96
Phil Nash673ec552017-03-01 15:58:57 +000097// Required for some versions of Cygwin to declare gettimeofday
98// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
99# define _BSD_SOURCE
100
Martin Hořeňovskýc6178602017-02-15 17:57:22 +0100101#endif // __CYGWIN__
102
Phil Nash5062d3e2013-04-16 22:55:31 +0100103////////////////////////////////////////////////////////////////////////////////
104// Borland
105#ifdef __BORLANDC__
106
Phil Nash5062d3e2013-04-16 22:55:31 +0100107
108#endif // __BORLANDC__
109
110////////////////////////////////////////////////////////////////////////////////
111// EDG
112#ifdef __EDG_VERSION__
113
Phil Nash5062d3e2013-04-16 22:55:31 +0100114
115#endif // __EDG_VERSION__
116
117////////////////////////////////////////////////////////////////////////////////
118// Digital Mars
119#ifdef __DMC__
120
Phil Nash5062d3e2013-04-16 22:55:31 +0100121
122#endif // __DMC__
123
124////////////////////////////////////////////////////////////////////////////////
125// GCC
126#ifdef __GNUC__
127
Phil Nash91bfe682016-02-29 08:01:06 +0000128# if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__)
129# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
130# endif
131
Phil Nashfe690a62017-02-15 09:38:38 +0000132
Phil Nashf3308ed2015-07-27 18:34:21 +0100133// - otherwise more recent versions define __cplusplus >= 201103L
134// and will get picked up below
135
Phil Nash5062d3e2013-04-16 22:55:31 +0100136
137#endif // __GNUC__
138
139////////////////////////////////////////////////////////////////////////////////
140// Visual C++
141#ifdef _MSC_VER
142
Martin Hořeňovskýe991c002017-02-06 01:43:53 +0100143#define CATCH_INTERNAL_CONFIG_WINDOWS_SEH
144
Phil Nash43470b22015-05-19 22:37:23 +0100145#if (_MSC_VER >= 1600)
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100146# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
Phil Nash40d0d2f2015-08-11 08:09:41 +0100147# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR
Phil Nash43470b22015-05-19 22:37:23 +0100148#endif
149
Phil Nashe86daf82015-05-19 18:37:58 +0100150#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015))
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100151#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
152#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
Martin Hořeňovský69915492017-01-07 12:58:01 +0100153#define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
Martin Hořeňovský60a9ac72017-01-26 18:47:29 +0100154#define CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS
Phil Nashe86daf82015-05-19 18:37:58 +0100155#endif
156
Phil Nash5062d3e2013-04-16 22:55:31 +0100157#endif // _MSC_VER
158
Phil Nash40d0d2f2015-08-11 08:09:41 +0100159////////////////////////////////////////////////////////////////////////////////
160
Phil Nash4dd3f682013-04-22 08:19:17 +0100161// Use variadic macros if the compiler supports them
162#if ( defined _MSC_VER && _MSC_VER > 1400 && !defined __EDGE__) || \
163 ( defined __WAVE__ && __WAVE_HAS_VARIADICS ) || \
164 ( defined __GNUC__ && __GNUC__ >= 3 ) || \
165 ( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L )
Phil Nash597ed1f2013-05-14 19:31:21 +0100166
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100167#define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
Phil Nash597ed1f2013-05-14 19:31:21 +0100168
Phil Nash4dd3f682013-04-22 08:19:17 +0100169#endif
Phil Nash5062d3e2013-04-16 22:55:31 +0100170
Phil Nash13a887a2015-12-15 07:50:51 +0000171// Use __COUNTER__ if the compiler supports it
172#if ( defined _MSC_VER && _MSC_VER >= 1300 ) || \
173 ( defined __GNUC__ && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 ) || \
174 ( defined __clang__ && __clang_major__ >= 3 )
175
176#define CATCH_INTERNAL_CONFIG_COUNTER
177
178#endif
Phil Nash91bfe682016-02-29 08:01:06 +0000179
gnzlbgce659852014-03-20 12:48:19 +0100180////////////////////////////////////////////////////////////////////////////////
181// C++ language feature support
182
Phil Nashe86daf82015-05-19 18:37:58 +0100183// catch all support for C++11
Phil Nash91bfe682016-02-29 08:01:06 +0000184#if defined(CATCH_CPP11_OR_GREATER)
Phil Nashe86daf82015-05-19 18:37:58 +0100185
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100186# if !defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR)
187# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
Phil Nashe86daf82015-05-19 18:37:58 +0100188# endif
189
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100190# ifndef CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
191# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
Phil Nashe86daf82015-05-19 18:37:58 +0100192# endif
193
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100194# ifndef CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
195# define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
Phil Nashe86daf82015-05-19 18:37:58 +0100196# endif
197
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100198# ifndef CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
199# define CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
Phil Nashe86daf82015-05-19 18:37:58 +0100200# endif
201
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100202# ifndef CATCH_INTERNAL_CONFIG_CPP11_TUPLE
203# define CATCH_INTERNAL_CONFIG_CPP11_TUPLE
Phil Nashe86daf82015-05-19 18:37:58 +0100204# endif
205
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100206# ifndef CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
207# define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
Phil Nashe86daf82015-05-19 18:37:58 +0100208# endif
209
Phil Nash733ebb62015-07-23 19:03:33 +0100210# if !defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG)
211# define CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG
212# endif
213
Phil Nash4cb74762015-08-05 19:02:17 +0100214# if !defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE)
215# define CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE
216# endif
Phil Nash40d0d2f2015-08-11 08:09:41 +0100217# if !defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR)
218# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR
219# endif
Martin Hořeňovský69915492017-01-07 12:58:01 +0100220# if !defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE)
221# define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
222# endif
Martin Hořeňovský60a9ac72017-01-26 18:47:29 +0100223# if !defined(CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS)
224# define CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS
225# endif
Phil Nash4cb74762015-08-05 19:02:17 +0100226
Phil Nashe86daf82015-05-19 18:37:58 +0100227#endif // __cplusplus >= 201103L
gnzlbgce659852014-03-20 12:48:19 +0100228
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100229// Now set the actual defines based on the above + anything the user has configured
230#if defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NO_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_NO_CPP11)
231# define CATCH_CONFIG_CPP11_NULLPTR
232#endif
233#if defined(CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_NO_CPP11)
234# define CATCH_CONFIG_CPP11_NOEXCEPT
235#endif
236#if defined(CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_NO_CPP11)
237# define CATCH_CONFIG_CPP11_GENERATED_METHODS
238#endif
239#if defined(CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_NO_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_NO_CPP11)
240# define CATCH_CONFIG_CPP11_IS_ENUM
241#endif
242#if defined(CATCH_INTERNAL_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_CPP11_NO_TUPLE) && !defined(CATCH_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_NO_CPP11)
243# define CATCH_CONFIG_CPP11_TUPLE
244#endif
245#if defined(CATCH_INTERNAL_CONFIG_VARIADIC_MACROS) && !defined(CATCH_CONFIG_NO_VARIADIC_MACROS) && !defined(CATCH_CONFIG_VARIADIC_MACROS)
Phil Nash733ebb62015-07-23 19:03:33 +0100246# define CATCH_CONFIG_VARIADIC_MACROS
247#endif
Martin Hořeňovskýa1bed572017-01-10 22:54:57 +0100248#if defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_NO_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_CPP11)
Phil Nash733ebb62015-07-23 19:03:33 +0100249# define CATCH_CONFIG_CPP11_LONG_LONG
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100250#endif
Martin Hořeňovskýa1bed572017-01-10 22:54:57 +0100251#if defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_NO_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_CPP11)
Phil Nash4cb74762015-08-05 19:02:17 +0100252# define CATCH_CONFIG_CPP11_OVERRIDE
253#endif
Martin Hořeňovskýa1bed572017-01-10 22:54:57 +0100254#if defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_NO_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_CPP11)
Phil Nash40d0d2f2015-08-11 08:09:41 +0100255# define CATCH_CONFIG_CPP11_UNIQUE_PTR
256#endif
Phil Nash750b52b2017-01-14 21:00:51 +0000257// Use of __COUNTER__ is suppressed if __JETBRAINS_IDE__ is #defined (meaning we're being parsed by a JetBrains IDE for
258// analytics) because, at time of writing, __COUNTER__ is not properly handled by it.
259// This does not affect compilation
260#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) && !defined(__JETBRAINS_IDE__)
Phil Nash13a887a2015-12-15 07:50:51 +0000261# define CATCH_CONFIG_COUNTER
262#endif
Martin Hořeňovskýa1bed572017-01-10 22:54:57 +0100263#if defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_NO_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_NO_CPP11)
Martin Hořeňovský69915492017-01-07 12:58:01 +0100264# define CATCH_CONFIG_CPP11_SHUFFLE
265#endif
Martin Hořeňovský60a9ac72017-01-26 18:47:29 +0100266# if defined(CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS) && !defined(CATCH_CONFIG_CPP11_NO_TYPE_TRAITS) && !defined(CATCH_CONFIG_CPP11_TYPE_TRAITS) && !defined(CATCH_CONFIG_NO_CPP11)
267# define CATCH_CONFIG_CPP11_TYPE_TRAITS
268# endif
Martin Hořeňovskýe991c002017-02-06 01:43:53 +0100269#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH)
270# define CATCH_CONFIG_WINDOWS_SEH
271#endif
Martin Hořeňovskýc6178602017-02-15 17:57:22 +0100272// This is set by default, because we assume that unix compilers are posix-signal-compatible by default.
Martin Hořeňovskýc3a41e22017-03-29 20:30:59 +0200273#if !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS)
Martin Hořeňovskýc6178602017-02-15 17:57:22 +0100274# define CATCH_CONFIG_POSIX_SIGNALS
275#endif
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100276
Phil Nash91bfe682016-02-29 08:01:06 +0000277#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS)
278# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
Phil Nashfe690a62017-02-15 09:38:38 +0000279# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS
Phil Nash91bfe682016-02-29 08:01:06 +0000280#endif
Martin Hořeňovskýc3a41e22017-03-29 20:30:59 +0200281#if !defined(CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS)
282# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS
283# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
284#endif
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100285
gnzlbgce659852014-03-20 12:48:19 +0100286// noexcept support:
Phil Nash1a6f2a02014-04-23 18:19:19 +0100287#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT)
288# define CATCH_NOEXCEPT noexcept
289# define CATCH_NOEXCEPT_IS(x) noexcept(x)
290#else
gnzlbgce659852014-03-20 12:48:19 +0100291# define CATCH_NOEXCEPT throw()
292# define CATCH_NOEXCEPT_IS(x)
293#endif
294
Phil Nash805de432015-07-01 07:33:27 +0100295// nullptr support
296#ifdef CATCH_CONFIG_CPP11_NULLPTR
297# define CATCH_NULL nullptr
298#else
299# define CATCH_NULL NULL
300#endif
Phil Nash7ab3b5a2015-06-30 08:41:55 +0100301
Phil Nash4cb74762015-08-05 19:02:17 +0100302// override support
303#ifdef CATCH_CONFIG_CPP11_OVERRIDE
304# define CATCH_OVERRIDE override
305#else
306# define CATCH_OVERRIDE
307#endif
308
Phil Nash40d0d2f2015-08-11 08:09:41 +0100309// unique_ptr support
310#ifdef CATCH_CONFIG_CPP11_UNIQUE_PTR
311# define CATCH_AUTO_PTR( T ) std::unique_ptr<T>
312#else
313# define CATCH_AUTO_PTR( T ) std::auto_ptr<T>
314#endif
315
Phil Nash5062d3e2013-04-16 22:55:31 +0100316#endif // TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
317