re PR libstdc++/61909 (Small function optimization not applied to small objects)

PR libstdc++/61909
	* include/std/functional (__is_location_invariant): Treat all
	trivially copyable types as location invariant.

From-SVN: r216047
This commit is contained in:
Jonathan Wakely 2014-10-09 19:17:28 +01:00 committed by Jonathan Wakely
parent bc2da0fc04
commit c386686921
2 changed files with 7 additions and 2 deletions

View File

@ -7,6 +7,10 @@
* include/std/atomic (atomic): Add assertion for trivially copyable.
* testsuite/29_atomics/atomic/60695.cc: Adjust line number.
PR libstdc++/61909
* include/std/functional (__is_location_invariant): Treat all
trivially copyable types as location invariant.
2014-10-09 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/60132

View File

@ -1743,11 +1743,12 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
/**
* Trait identifying "location-invariant" types, meaning that the
* address of the object (or any of its members) will not escape.
* Also implies a trivial copy constructor and assignment operator.
* Trivially copyable types are location-invariant and users can
* specialize this trait for other types.
*/
template<typename _Tp>
struct __is_location_invariant
: __or_<is_pointer<_Tp>, is_member_pointer<_Tp>>::type
: is_trivially_copyable<_Tp>::type
{ };
class _Undefined_class;