Added 3rd party bug to documentation

This commit is contained in:
Martin Hořeňovský 2017-02-08 20:53:39 +01:00
parent 1ff56301a1
commit a38ccec33a
2 changed files with 46 additions and 0 deletions

View File

@ -73,6 +73,11 @@ TEST_CASE("No longer a syntax error with VC12") {
} }
``` ```
### Visual Studio 2003 -- Syntax error caused by improperly expanded `__LINE__` macro
Older version of Visual Studio can have trouble compiling Catch, not expanding the `__LINE__` macro properly when recompiling the test binary. This is caused by Edit and Continue being on.
A workaround is to turn off Edit and Continue when compiling the test binary.
### Clang/G++ -- skipping leaf sections after an exception ### Clang/G++ -- skipping leaf sections after an exception
Some versions of `libc++` and `libstdc++` (or their runtimes) have a bug with `std::uncaught_exception()` getting stuck returning `true` after rethrow, even if there are no active exceptions. One such case is this snippet, which skipped the sections "a" and "b", when compiled against `libcxxrt` from master Some versions of `libc++` and `libstdc++` (or their runtimes) have a bug with `std::uncaught_exception()` getting stuck returning `true` after rethrow, even if there are no active exceptions. One such case is this snippet, which skipped the sections "a" and "b", when compiled against `libcxxrt` from master
```cpp ```cpp

View File

@ -0,0 +1,41 @@
/*
* Created by Phil on 08/02/2017.
*
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef TWOBLUECUBES_CATCH_META_HPP_INCLUDED
#define TWOBLUECUBES_CATCH_META_HPP_INCLUDED
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
#include <type_traits>
#endif
namespace Catch {
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
template <class T>
using add_lvalue_reference = std::add_lvalue_reference<T>;
#else
template <typename T>
struct add_l_value_reference {
typedef T& type;
};
template <typename T>
struct add_l_value_reference<T&> {
typedef T& type;
};
template <typename T>
struct add_l_value_reference<T&&> {
typedef T& type;
};
#endif
}
#endif // TWOBLUECUBES_CATCH_META_HPP_INCLUDED