Ignore:
Timestamp:
2018-07-05T21:41:24Z (7 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
09416c12
Parents:
ddd287d
git-author:
Dzejrou <dzejrou@…> (2018-05-17 23:46:22)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:24)
Message:

cpp: renamed aux::invoke to aux::INVOKE to match standard and avoid conflicts with std::invoke, added functional tests and fixed some bugs found by them

Location:
uspace/lib/cpp/include/__bits/functional
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/include/__bits/functional/bind.hpp

    rddd287d r69cc156  
    163163                }
    164164
    165             private:
    166                 function<decay_t<F>> func_;
     165            private: // TODO: This has problem with member function pointers.
     166                function<remove_reference_t<F>> func_;
    167167                tuple<decay_t<Args>...> bound_args_;
    168168
     
    183183                    bind_arg_filter<ActualArgs...> filter{forward<ActualArgs>(args)...};
    184184
    185                     return aux::invoke(
     185                    return aux::INVOKE(
    186186                        func_,
    187187                        filter[get<Is>(bound_args_)]...
  • uspace/lib/cpp/include/__bits/functional/invoke.hpp

    rddd287d r69cc156  
    5252
    5353    template<class R, class T, class T1, class... Ts>
    54     decltype(auto) invoke(R T::* f, T1&& t1, Ts&&... args)
     54    decltype(auto) INVOKE(R T::* f, T1&& t1, Ts&&... args)
    5555    {
    5656        if constexpr (is_member_function_pointer<decltype(f)>::value)
     
    8888
    8989    template<class F, class... Args>
    90     decltype(auto) invoke(F&& f, Args&&... args)
     90    decltype(auto) INVOKE(F&& f, Args&&... args)
    9191    {
    9292        // (1.5)
  • uspace/lib/cpp/include/__bits/functional/reference_wrapper.hpp

    rddd287d r69cc156  
    7575
    7676            template<class... Args>
    77             result_of_t<type&(Args&&...)> operator()(Args&&... args) const
     77            decltype(auto) operator()(Args&&... args) const
    7878            {
    79                 return invoke(*data_, std::forward<Args>(args)...);
     79                return aux::INVOKE(*data_, std::forward<Args>(args)...);
    8080            }
    8181
Note: See TracChangeset for help on using the changeset viewer.