From 0c187bfe8066762d0470d56c78d451d3bd3e9a3c Mon Sep 17 00:00:00 2001 From: khizmax Date: Thu, 5 Mar 2015 16:10:33 +0300 Subject: [PATCH] Fixed passing parameter pack into lambda --- cds/container/bronson_avltree_map_rcu.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cds/container/bronson_avltree_map_rcu.h b/cds/container/bronson_avltree_map_rcu.h index b0c24749..8278c6e6 100644 --- a/cds/container/bronson_avltree_map_rcu.h +++ b/cds/container/bronson_avltree_map_rcu.h @@ -236,12 +236,19 @@ namespace cds { namespace container { template bool emplace( K&& key, Args&&... args ) { + auto helper = []( Args&&... args ) -> mapped_type * + { + return cxx_allocator().New( std::forward(args)...); + }; + return base_class::do_update( key, key_comparator(), - [&]( node_type * pNode ) -> mapped_type* + [=]( node_type * pNode ) -> mapped_type * { assert( pNode->m_pValue.load( memory_model::memory_order_relaxed ) == nullptr ); CDS_UNUSED( pNode ); - return cxx_allocator().New( std::forward(args)...); + return helper( args... ); + // gcc/clang error: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47226 + //return cxx_allocator().New( std::forward(args)...); }, update_flags::allow_insert ) == update_flags::result_inserted; -- 2.34.1