• Eric Niebler's avatar
    rearrange folly::Function so that its template arguments are deducable. · 62b1d047
    Eric Niebler authored
    Summary:
    `folly::Function` was an alias to a more complex type with template arguments that could not be deduced. For example, the call to `foo` below was failing to compile.
    
    ```
    template <class R, class... As>
    void foo(folly::Function<R(As...)> f) {
    }
    
    int main() {
      foo( folly::Function<void(int)>{ [](int i){} } );
    }
    ```
    
    Rearrange the code so that folly::Function is no longer an alias, thus making its template arguments deducable.
    
    Reviewed By: luciang, spacedentist
    
    Differential Revision: D3256130
    
    fb-gh-sync-id: fb403e48d161635b3b7f36e53b1679eb46cbfe7f
    fbshipit-source-id: fb403e48d161635b3b7f36e53b1679eb46cbfe7f
    62b1d047
Function.h 23.5 KB