[gcc r16-8186] libstdc++: Micro-optimization for std::generator helper concept

Jonathan Wakely redi@gcc.gnu.org
Fri Mar 20 09:41:36 GMT 2026


https://gcc.gnu.org/g:81a326d1ffe6471722cef209364c3c909a7f9282

commit r16-8186-g81a326d1ffe6471722cef209364c3c909a7f9282
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Mar 18 22:24:24 2026 +0000

    libstdc++: Micro-optimization for std::generator helper concept
    
    The default_initializable concept is defined in terms of some builtins
    which should be cheap to evaluate. Check that before instantiating the
    allocator_traits class template.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/generator (_Stateless_alloc): Swap order of
            constraints.
    
    Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
    Reviewed-by: Arsen Arsenović <arsen@aarsen.me>

Diff:
---
 libstdc++-v3/include/std/generator | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/generator b/libstdc++-v3/include/std/generator
index 115bf943ae95..88651dd6f76a 100644
--- a/libstdc++-v3/include/std/generator
+++ b/libstdc++-v3/include/std/generator
@@ -423,8 +423,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 
     template<typename _All>
-    concept _Stateless_alloc = (allocator_traits<_All>::is_always_equal::value
-				&& default_initializable<_All>);
+    concept _Stateless_alloc
+	= default_initializable<_All>
+	    && allocator_traits<_All>::is_always_equal::value;
 
     template<typename _Allocator>
       class _Promise_alloc


More information about the Libstdc++-cvs mailing list