mirror of
https://github.com/catchorg/Catch2.git
synced 2025-05-29 16:09:30 +00:00
Reorganised C+11 feature detection a bit
and added CATCH_CONFIG_CPP11_NULLPTR for VS2015
This commit is contained in:
parent
bfa3f863d6
commit
e86daf8bdd
9 changed files with 76 additions and 45 deletions
|
@ -8,7 +8,22 @@
|
|||
#ifndef TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
|
||||
#define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
|
||||
|
||||
// Much of the following code is based on Boost (1.53)
|
||||
// Detect a number of compiler features - mostly C++11/14 conformance - by compiler
|
||||
// The following features are defined:
|
||||
//
|
||||
// CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported?
|
||||
// CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported?
|
||||
// CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods
|
||||
// CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported?
|
||||
// CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported
|
||||
|
||||
// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported?
|
||||
|
||||
// CATCH_CONFIG_SFINAE : is basic (C++03) SFINAE supported?
|
||||
// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported?
|
||||
|
||||
|
||||
// A lot of this code is based on Boost (1.53)
|
||||
|
||||
#ifdef __clang__
|
||||
|
||||
|
@ -88,6 +103,13 @@
|
|||
//#define CATCH_CONFIG_SFINAE // Not confirmed
|
||||
#endif
|
||||
|
||||
#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015))
|
||||
#define CATCH_CONFIG_CPP11_NOEXCEPT
|
||||
#define CATCH_CONFIG_CPP11_GENERATED_METHODS
|
||||
#define CATCH_CONFIG_CPP11_NULLPTR
|
||||
//#define CATCH_CONFIG_SFINAE // Don't use, for now
|
||||
#endif
|
||||
|
||||
#endif // _MSC_VER
|
||||
|
||||
// Use variadic macros if the compiler supports them
|
||||
|
@ -105,13 +127,40 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
// C++ language feature support
|
||||
|
||||
// detect language version:
|
||||
#if (__cplusplus == 201103L)
|
||||
# define CATCH_CPP11
|
||||
// catch all support for C++11
|
||||
#if (__cplusplus >= 201103L)
|
||||
|
||||
# define CATCH_CPP11_OR_GREATER
|
||||
#elif (__cplusplus >= 201103L)
|
||||
# define CATCH_CPP11_OR_GREATER
|
||||
#endif
|
||||
|
||||
# ifndef CATCH_CONFIG_CPP11_NULLPTR
|
||||
# define CATCH_CONFIG_CPP11_NULLPTR
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_CPP11_NOEXCEPT
|
||||
# define CATCH_CONFIG_CPP11_NOEXCEPT
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS
|
||||
# define CATCH_CONFIG_CPP11_GENERATED_METHODS
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_CPP11_IS_ENUM
|
||||
# define CATCH_CONFIG_CPP11_IS_ENUM
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_CPP11_TUPLE
|
||||
# define CATCH_CONFIG_CPP11_TUPLE
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_SFINAE
|
||||
//# define CATCH_CONFIG_SFINAE // Don't use, for now
|
||||
# endif
|
||||
|
||||
# ifndef CATCH_CONFIG_VARIADIC_MACROS
|
||||
# define CATCH_CONFIG_VARIADIC_MACROS
|
||||
# endif
|
||||
|
||||
#endif // __cplusplus >= 201103L
|
||||
|
||||
// noexcept support:
|
||||
#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue