From c866020da62cfcae7e8fad0cbb2c7392e8108c26 Mon Sep 17 00:00:00 2001 From: "Steven R. Loomis" Date: Fri, 7 Mar 2014 00:30:23 +0000 Subject: [PATCH] ICU-10272 the clang workaround was only *mostly* harmless. Disable it under Windows. Fix: typeinfo(82): error C2874: using-declaration causes a multiple declaration of 'type_info' X-SVN-Rev: 35375 --- icu4c/source/common/unicode/std_string.h | 3 +++ icu4c/source/common/utypeinfo.h | 3 ++- icu4c/source/io/unicode/ustream.h | 5 ++++- icu4c/source/test/intltest/dcfmtest.cpp | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/icu4c/source/common/unicode/std_string.h b/icu4c/source/common/unicode/std_string.h index e39ad41ebb1..626ab06042c 100644 --- a/icu4c/source/common/unicode/std_string.h +++ b/icu4c/source/common/unicode/std_string.h @@ -27,7 +27,10 @@ #if U_HAVE_STD_STRING +#if defined(_MSC_VER) && _HAS_EXCEPTIONS == 0 +#else namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 +#endif #include #endif // U_HAVE_STD_STRING diff --git a/icu4c/source/common/utypeinfo.h b/icu4c/source/common/utypeinfo.h index 8031ee5b036..e35f125a397 100644 --- a/icu4c/source/common/utypeinfo.h +++ b/icu4c/source/common/utypeinfo.h @@ -21,8 +21,9 @@ #if defined(_MSC_VER) && _HAS_EXCEPTIONS == 0 #include using std::exception; +#else +namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 #endif -namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 #include // for 'typeid' to work #endif diff --git a/icu4c/source/io/unicode/ustream.h b/icu4c/source/io/unicode/ustream.h index 502fcc052f9..dfa199db7dc 100644 --- a/icu4c/source/io/unicode/ustream.h +++ b/icu4c/source/io/unicode/ustream.h @@ -26,7 +26,10 @@ * C++ I/O stream API. */ -namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 +#if defined(_MSC_VER) && _HAS_EXCEPTIONS == 0 +#else +namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 +#endif #if U_IOSTREAM_SOURCE >= 199711 #if (__GNUC__ == 2) diff --git a/icu4c/source/test/intltest/dcfmtest.cpp b/icu4c/source/test/intltest/dcfmtest.cpp index 197f5424b60..84f31c3e429 100644 --- a/icu4c/source/test/intltest/dcfmtest.cpp +++ b/icu4c/source/test/intltest/dcfmtest.cpp @@ -29,7 +29,10 @@ #include #include +#if defined(_MSC_VER) && _HAS_EXCEPTIONS == 0 +#else namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364 +#endif #include #include -- 2.40.0