2 * This program checks if the compiler doesn't have a certain bug
3 * that we encountered when testing C++11 features.
5 * This test validates whether a alias can be used to explicitly
6 * call a destructor, which is related to DR244 (see
7 * http://wg21.cmeerw.net/cwg/issue244)
9 * This is partly fixed May 2014 in clang, see
10 * http://llvm.org/viewvc/llvm-project?view=revision&revision=209319
12 * Currently the using is required, see
13 * https://bugs.llvm.org/show_bug.cgi?id=12350
16 #include "test_config.h"
30 std::string string_member_
;
35 A::u_type_::u_type_ ()
39 A::u_type_::~u_type_ ()
45 #if defined __clang__ && \
46 (defined __apple_build_version__ && __apple_build_version__ <= 12000322 \
47 || __clang_major__ <= 10)
48 #define CLANG_WORKAROUND
51 #ifdef CLANG_WORKAROUND
52 // clang requires one of two workarounds:
53 // 1. the name after ~ must be in scope
56 this->u_
.string_member_
.std::string::~string ();
64 #ifdef CLANG_WORKAROUND
65 // 2. actual class name instead of typedef
66 u_
.m
.std::string::~basic_string ();
68 u_
.m
.std::string::~string ();
74 run_main (int, ACE_TCHAR
*[])
76 ACE_START_TEST (ACE_TEXT("Compiler_Features_32_Test"));
81 ACE_TEXT ("C++11 support ok\n")));