Jonathan Wakely | 28 Apr 14:33 2016

[patch] libstdc++/70766 use std::addressof instead of operator&

A few more places where we should be using std::addressof.

Tested x86_64-linux, committed to trunk.

Attachment (patch.txt): text/x-patch, 14 KiB
Chris Gregory | 28 Apr 06:14 2016

[patch] Remove trailing whitespaces

This doesn't break any of the code.

I made sure that this didn't affect any string literals or character literals.


Chris Gregory!
Index: libstdc++-v3/src/
diff --git a/trunk/libstdc++-v3/src/ b/trunk/libstdc++-v3/src/
--- a/trunk/libstdc++-v3/src/	(revision 235544)
+++ b/trunk/libstdc++-v3/src/	(working copy)
 <at>  <at>  -77,7 +77,7  <at>  <at>  cxx98_sources = \ \ \ \
-	${ldbl_compat_sources} 
+	${ldbl_compat_sources}
 cxx11_sources = \ \
 <at>  <at>  -141,7 +141,7  <at>  <at>  compatibility-condvar.o:
 	$(CXXCOMPILE) -std=gnu++11 -c $<
 # A note on compatibility and static libraries.
 # static lib == linked against only this version, should not need compat
(Continue reading)

Marc Glisse | 20 Apr 22:42 2016

tuple move constructor


does anyone remember why the move constructor of _Tuple_impl is not 
defaulted? The attached patch does not cause any test to fail (whitespace 
kept to avoid line number changes). Maybe something about tuples of 

I don't remember how I noticed, maybe some is_trivial trait was failing 
unexpectedly, or the move constructor was not deleted when I expected 
it to be...


Marc Glisse
Index: libstdc++-v3/include/std/tuple
--- libstdc++-v3/include/std/tuple	(revision 234507)
+++ libstdc++-v3/include/std/tuple	(working copy)
 <at>  <at>  -208,25 +208,25  <at>  <at>  _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _UHead, typename... _UTail, typename = typename
                enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type> 
         constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
 	: _Inherited(std::forward<_UTail>(__tail)...),
 	  _Base(std::forward<_UHead>(__head)) { }
       constexpr _Tuple_impl(const _Tuple_impl&) = default;
-      _Tuple_impl(_Tuple_impl&& __in)
(Continue reading)

Jonathan Wakely | 18 Apr 20:03 2016

[patch] libstdc++/41759 reword static assertions in <random>

The PR suggests using the positive condition for the static assert
message. This patch changes them from the negative condition, to a
statement about what must be true, which I think is better.

Tested x86_64-linux, committed to trunk.

Attachment (patch.txt): text/x-patch, 11 KiB
Jonathan Wakely | 18 Apr 18:37 2016

[patch] Remove unused typedefs in std::bind types

Tested x86_64-linux, committed to trunk.

Attachment (patch.txt): text/x-patch, 1100 bytes
Jonathan Wakely | 18 Apr 18:16 2016

[patch] libstdc++/70294 Define std::thread::id comparison operators at namespace-scope

The operator< and operator== for std::thread::id are not visible at
namespace scope, so can only be found by ADL. This fixes it.

Tested x86_64-linux, committed to trunk.

Attachment (patch.txt): text/x-patch, 3555 bytes
Ed Smith-Rowland | 18 Apr 05:21 2016

Edit the C++14 library warning header to not indicate experimental.

Since the default is C++14 it seems apropos to *not* treat that C++ 
version thusly in the warning in libstdc++.

OK for trunk?  And maybe some 6 branch later?

2016-04-17  Edward Smith-Rowland  <3dw4rd <at>>

	* include/bits/c++14_warning.h: Do not refer C++14 as experimental.

Index: include/bits/c++14_warning.h
--- include/bits/c++14_warning.h	(revision 235086)
+++ include/bits/c++14_warning.h	(working copy)
 <at>  <at>  -29,9 +29,9  <at>  <at> 
 #define _CXX14_WARNING_H 1

 #if __cplusplus <= 201103L
-#error This file requires compiler and library support for the forthcoming \
-ISO C++ 2014 standard. This support is currently experimental, and must be \
-enabled with the -std=c++1y or -std=gnu++1y compiler options.
+#error This file requires compiler and library support \
+for the ISO C++ 2014 standard. This support must be enabled \
+with the -std=c++14 or -std=gnu++14 compiler options.
(Continue reading)

Ed Smith-Rowland | 18 Apr 04:34 2016

Trivial comment misspelling in libstdc++ specfun.h

Committed as obvious.

2016-04-17  Edward Smith-Rowland  <3dw4rd <at>>

	* include/bits/specfun.h: Trivial comment misspelling.

Index: include/bits/specfun.h
--- include/bits/specfun.h	(revision 235086)
+++ include/bits/specfun.h	(working copy)
 <at>  <at>  -126,7 +126,7  <at>  <at> 
    *  <at> subsection promotion Argument Promotion
    * The arguments suppled to the non-suffixed functions will be promoted
    * according to the following rules:
-   * 1. If any argument intended to be floating opint is given an integral value
+   * 1. If any argument intended to be floating point is given an integral value
    * That integral value is promoted to double.
    * 2. All floating point arguments are promoted up to the largest floating
    *    point precision among them.
Eric Botcazou | 6 Apr 09:39 2016

[patch] Remove superfluous /dev/null on grep line


we recently ran into build failures on Windows systems using a somewhat old 
grep, coming from a syntax error in the libstdc++-symbols.ver version file:

# Symbol versioning for shared libraries.
libstdc++-symbols.ver:  ${glibcxx_srcdir}/$(SYMVER_FILE) \
	cp ${glibcxx_srcdir}/$(SYMVER_FILE) $ <at> .tmp
	chmod +w $ <at> .tmp
	if test "x$(port_specific_symbol_files)" != x; then \
	  if grep '^# Appended to version file.' \
	       $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then 
	    cat $(port_specific_symbol_files) >> $ <at> .tmp; \
	  else \
	    sed -n '1,/DO NOT DELETE/p' $ <at> .tmp >; \
	    sed -n '/DO NOT DELETE/,$$p' $ <at> .tmp > tmp.bottom; \
	    cat $(port_specific_symbol_files) tmp.bottom > $ <at> .tmp; \
	    rm tmp.bottom; \
	  fi; \

Note the double /dev/null on the grep command line.  The first one causes the 
grep to fail when the command is invoked on these systems.  That's old code, 
but it is now invoked for config/abi/pre/float128.ver on the mainline and 5 
branch and this breaks the build on these systems (4.9 builds fine).

This first /dev/null doesn't serve any useful purpose and seems to be a typo, 
(Continue reading)

Jonathan Wakely | 5 Apr 15:37 2016

[patch] libstdc++/70503 Ensure std::thread helpers have internal linkage

This makes the execute_native_thread_routine* helpers 'static' rather
than using an unnamed namespace, because the latter doesn't give them
static linkage due to them being extern "C".

Tested x86_64-linux, committed to trunk. Backports to gcc-5 and
gcc-4.9 to follow soon.

Attachment (patch.txt): text/x-patch, 2825 bytes
Ed Smith-Rowland | 11 Mar 17:20 2016

Move filesystem to std for C++17


I first want to apologize for the tone of my last message regarding 
moving filesystem to std for C++17.
I was being a dick.  I didn't mean to disparage the efforts of the 
committee or any of the maintainers here (especially Jonathan).
I also greatly appreciate the support this community gives me.

Anyway, I decided to take a look myself and discovered there are some 
issues worth talking about first.

1.  We need to support experimental/filesystem for C++14 and lower, and 
without complaint, so as not to break code.

2.  We need to support experimental/filesystem for C++17 and up but I 
think we should warn.
    a.  Deprecate std::experimental::filesystem for c++17 and up.
    b.  We have the ability to add [[deprecated]] to a namespace but i'm 
not sure the deprecation mechinism is wired to actually do the thing 
with ns.
    c.  I think this:

namespace std::experimental::filesystem::v1
   using namespace std::filesystem;

   d.  I'm not sure what happens when v2 rolls around.  Deal with it later.

3.  Move <filesystem> to std.  New <experimental/filesystem> points to 
(Continue reading)