Skip to content
  • Eric Fiselier's avatar
    Implement variadic lock_guard. · 48f35e07
    Eric Fiselier authored
    Summary:
    This patch implements the variadic `lock_guard` paper. 
    
    Making `lock_guard` variadic is a ABI breaking change because the specialization `lock_guard<_Mutex>` mangles differently then when it was the primary template. This change only provides variadic `lock_guard` in ABI V2 or when `_LIBCPP_ABI_VARIADIC_LOCK_GUARD` is defined.
    
    Note that in ABI V2 `lock_guard` must always be declared as a variadic template, even in C++03, in order to keep the ABI consistent. For this reason `lock_guard` is forward declared as a variadic template in all standard dialects and therefore depends on variadic templates being provided as an extension in C++03. All supported versions of Clang and GCC provide this extension.
    
    
    
    
    Reviewers: mclow.lists
    
    Subscribers: K-ballo, mclow.lists, cfe-commits
    
    Differential Revision: http://reviews.llvm.org/D21260
    
    llvm-svn: 272634
    48f35e07
Loading