• Kirk Shoop's avatar
    make subset of pushmi build in xplat · df5f9801
    Kirk Shoop authored
    Summary:
    changes needed to add pushmi to xplat which is needed to make folly::Executor depend on pushmi.
    
    split from - D12912583
    
    MSVC 15.6.7 (required to keep cuda working) issues:
    - __VA_ARGS__ results in a single token on MSVC and not on gcc or clang. I changed the macros to expand the single token so that it is parsed as multiuple tokens again
    - some template usage must be placed inside `decltype()` to work with MSVC
    - a nested set of macros using __VA_ARGS__ only worked on MSVC and clang when nested twice, but not when nested three times. changed the macros to use explicit parameters.
    - gave up on pushmi invoke/invoke_result_t, now uses folly:Invoke instead.
    - gave up on property_insert_t, removed usage that was needed for ExecutorTest
    - switched many uses of make_receiver/make_sender to full bespoke receiver/sender implementations.
    - disabled deduction guides on windows
    - disabled apply on windows
    - added additional disambiguity for function overloads that MSVC complained were redefinitions (only differed in SFINAE) also reduced to one `operator|` for this reason
    - restructured `__property_category_t` and `__properties_t` to reduce MSVC ICE and other issues.
    - MSVC did not like `property_set_element<POut, property_category_t<PIn>>` changed to `property_set_element<POut, PCategory>`
    - MSVC complained about implicitly deleted destructors for `property_set_insert` explicitly added them..
    - MSVC does not like `)::value` sequence added `bool_v`.
    - replaced auto with explicit return types in some places.
    - added the missing `remove_cvref_t`
    
    In other news:
    - added tags.h to minimize Executor dependencies on pushmi
    - add `property_set_traits_disable_v` to allow EventBase to disable SequencedExecutor traits specialization
    - add support for building without exceptions to the customization points
    
    Reviewed By: ericniebler
    
    Differential Revision: D14686496
    
    fbshipit-source-id: c3f195783fd9a5f77b997498c44d4eebef1afe57
    df5f9801
extension_points.h 10.6 KB