Ignore:
Timestamp:
Sep 13, 2017, 3:11:24 PM (4 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
c57ded70, db70fe4
Parents:
d130fe8 (diff), 982832e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg2:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    rd130fe8 rba54f7d  
    277277        ~ValueGuardPtr() { if( ref ) *ref = old; }
    278278};
     279
     280template< typename aT >
     281struct FuncGuard {
     282        aT m_after;
     283
     284        template< typename bT >
     285        FuncGuard( bT before, aT after ) : m_after( after ) {
     286                before();
     287        }
     288
     289        ~FuncGuard() {
     290                m_after();
     291        }
     292};
     293
     294template< typename bT, typename aT >
     295FuncGuard<aT> makeFuncGuard( bT && before, aT && after ) {
     296        return FuncGuard<aT>( std::forward<bT>(before), std::forward<aT>(after) );
     297}
    279298
    280299template< typename T >
Note: See TracChangeset for help on using the changeset viewer.