gcc/libstdc++-v3/testsuite/26_numerics
Jonathan Wakely 1b749ae95e PR libstdc++/83860 avoid dangling references in valarray closure types
Store nested closures by value not by reference, to prevent holding
invalid references to temporaries that have been destroyed. This
changes the layout of the closure types, so change their linkage names,
but moving them to a different namespace.

	PR libstdc++/57997
	PR libstdc++/83860
	* include/bits/gslice_array.h (gslice_array): Define default
	constructor as deleted, as per C++11 standard.
	* include/bits/mask_array.h (mask_array): Likewise.
	* include/bits/slice_array.h (slice_array): Likewise.
	* include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
	to namespace __detail.
	(_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
	members.
	* include/bits/valarray_before.h (_ValArrayRef): New helper for type
	of data members in closure objects.
	(_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
	(_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
	__detail.
	(_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
	(_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
	(_SBase::_M_expr): Use _ValArrayRef for type of data members.
	* include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
	(_ValFunClos, _RefFunClos): Move to namespace __detail and add
	using-declarations to namespace std.
	* testsuite/26_numerics/valarray/83860.cc: New.

From-SVN: r259844
2018-05-02 17:41:46 +01:00
..
accumulate Update copyright years. 2018-01-03 11:03:58 +01:00
adjacent_difference Update copyright years. 2018-01-03 11:03:58 +01:00
complex Update copyright years. 2018-01-03 11:03:58 +01:00
gcd Update copyright years. 2018-01-03 11:03:58 +01:00
headers Update copyright years. 2018-01-03 11:03:58 +01:00
inner_product Update copyright years. 2018-01-03 11:03:58 +01:00
iota Update copyright years. 2018-01-03 11:03:58 +01:00
lcm Update copyright years. 2018-01-03 11:03:58 +01:00
partial_sum Update copyright years. 2018-01-03 11:03:58 +01:00
random Remove duplicate "//" in comment 2018-01-29 14:09:52 +00:00
slice Update copyright years. 2018-01-03 11:03:58 +01:00
slice_array Update copyright years. 2018-01-03 11:03:58 +01:00
valarray PR libstdc++/83860 avoid dangling references in valarray closure types 2018-05-02 17:41:46 +01:00