From c89ac4829568a84720b174d83d765482373774fd Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Thu, 8 May 2014 11:13:43 -0700 Subject: [PATCH 1/4] BOOST_NO_CXX11_ALLOCATOR should be defined with libc++ in C++03 mode --- include/boost/config/stdlib/libcpp.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 761017f2..88184ef9 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -23,6 +23,14 @@ # define BOOST_NO_CXX11_HDR_TUPLE #endif +// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11 +// allocator model. The C++11 allocator model requires a conforming +// std::allocator_traits which is only possible with C++11 template +// aliases since members rebind_alloc and rebind_traits require it. +#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES) +# define BOOST_NO_CXX11_ALLOCATOR +#endif + // // These appear to be unusable/incomplete so far: // From ac11ae9890786678325e6d02795fed9f60b631d2 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Thu, 8 May 2014 11:53:50 -0700 Subject: [PATCH 2/4] Add test case for BOOST_NO_CXX11_ALLOCATOR --- test/boost_no_cxx11_allocator.ipp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/boost_no_cxx11_allocator.ipp b/test/boost_no_cxx11_allocator.ipp index 07eb35e0..84ec78ee 100644 --- a/test/boost_no_cxx11_allocator.ipp +++ b/test/boost_no_cxx11_allocator.ipp @@ -31,11 +31,13 @@ int test() std::allocator ia; std::allocator_traits >::rebind_alloc ra(ia); std::allocator* pva = &ra; + std::allocator_traits >::rebind_traits::pointer pt; (void)aat; (void)ua; (void)at; (void)pva; + (void)pt; return 0; } From 86b46bb01e440e2de12d7b230bda830c00d2adae Mon Sep 17 00:00:00 2001 From: Steve Gates Date: Tue, 13 May 2014 14:18:38 -0700 Subject: [PATCH 3/4] Fixing failing test case boost_no_cxx11_hdr_regex. --- test/boost_no_cxx11_hdr_regex.ipp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/boost_no_cxx11_hdr_regex.ipp b/test/boost_no_cxx11_hdr_regex.ipp index 81512579..1901482c 100644 --- a/test/boost_no_cxx11_hdr_regex.ipp +++ b/test/boost_no_cxx11_hdr_regex.ipp @@ -1,5 +1,5 @@ // (C) Copyright Beman Dawes 2009 - +// Copyright (c) Microsoft Corporation // Use, modification and distribution are subject to 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) @@ -20,7 +20,7 @@ int test() using std::wregex; regex e("\\d+"); - wregex we(L"\\s+"); + wregex we(L"\\d+"); std::string s("123456"); std::wstring ws(L"123456"); return regex_match(s, e) && regex_match(ws, we) ? 0 : 1; From 72dff45159d856366da556769aa16e1f4ec6c7ea Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Tue, 20 May 2014 15:38:03 -0500 Subject: [PATCH 4/4] Add constants for memory models used by gnu "__ATOMIC..." intrinsics. These should be supplied by the compiler, but until they are we will define them here. Once they are defined in the compiler we will need to start sorting out compiler versions in cray.hpp --- include/boost/config/compiler/cray.hpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index c2adff69..f0d2776d 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -25,11 +25,12 @@ // -// Cray peculiarities, probably version 7 specific: // +#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS #define BOOST_HAS_NRVO +#define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -64,4 +65,24 @@ #define BOOST_SP_USE_PTHREADS #define BOOST_AC_USE_PTHREADS +/* everything that follows is working around what are thought to be + * compiler shortcomings. Revist all of these regularly. + */ + +//#define BOOST_USE_ENUM_STATIC_ASSERT +//#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS //(this may be implied by the previous #define + +// These constants should be provided by the +// compiler, at least when -hgnu is asserted on the command line. + +#ifndef __ATOMIC_RELAXED +#define __ATOMIC_RELAXED 0 +#define __ATOMIC_CONSUME 1 +#define __ATOMIC_ACQUIRE 2 +#define __ATOMIC_RELEASE 3 +#define __ATOMIC_ACQ_REL 4 +#define __ATOMIC_SEQ_CST 5 +#endif + +