This change works around a couple of bugs:
1. EDG doesn't like explicit constexpr in a derived class. This program:
struct Base {};
struct Derived : Base {
constexpr Derived() = default;
};
triggers "error: defaulted default constructor cannot be constexpr."
2. C1XX with /Za has no idea which constructor needs to be valid for copy elision.
The change also conditionally disables parts of the msvc_stdlib_force_include.hpp header that conflict with external configuration when _LIBCXX_IN_DEVCRT is defined.
Differential Revision: https://reviews.llvm.org/D32778
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302707 91177308-0d34-0410-b5e6-96231b3b80d8
29 lines
842 B
C++
29 lines
842 B
C++
// -*- C++ -*-
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SUPPORT_TEST_WORKAROUNDS_H
|
|
#define SUPPORT_TEST_WORKAROUNDS_H
|
|
|
|
#include "test_macros.h"
|
|
|
|
#if defined(TEST_COMPILER_EDG)
|
|
# define TEST_WORKAROUND_EDG_EXPLICIT_CONSTEXPR
|
|
#endif
|
|
|
|
#if defined(TEST_COMPILER_C1XX)
|
|
# define TEST_WORKAROUND_C1XX_BROKEN_NULLPTR_CONVERSION_OPERATOR
|
|
# define TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE
|
|
# ifndef _MSC_EXTENSIONS
|
|
# define TEST_WORKAROUND_C1XX_BROKEN_ZA_CTOR_CHECK
|
|
# endif
|
|
#endif
|
|
|
|
#endif // SUPPORT_TEST_WORKAROUNDS_H
|