#define WARP_CALL(fun, ...) fun(__VA_ARGS__)
template<class R, class T1, class T2, class T3>
R warp_call(R(*fun)(T1, T2, T3), T1 a, T2 b, T3 c)
{
return fun(a, b, c);
}
template<class Fun, class... Args>
auto wrap_call(Fun f, Args... args) -> decltype(f(args...))
{
return f(args...);
}
template<class Fun, class... Args>
auto wrap_call(Fun&& f, Args&&... args)
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
template<class Fun, class... Args>
auto wrap_call(Fun&& f, Args&&... args)
-> decltype(std::forward<Fun>(f)(std::forward<Args>(args)...))
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
template<class Fun, class... Args>
decltype(auto) wrap_call(Fun&& f, Args&&... args)
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
template<class Fun, class... Args>
decltype(auto) wrap_call(Fun&& f, Args&&... args)
noexcept(noexcept(std::forward<Fun>(f)(std::forward<Args>(args)...)))
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
template<class Fun, class... Args>
auto wrap_call(Fun&& f, Args&&... args)
noexcept(noexcept(std::forward<Fun>(f)(std::forward<Args>(args)...)))
-> decltype(std::forward<Fun>(f)(std::forward<Args>(args)...))
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
template<class Fun, class... Args>
constexpr auto wrap_call(Fun&& f, Args&&... args)
noexcept(noexcept(std::forward<Fun>(f)(std::forward<Args>(args)...)))
-> decltype(std::forward<Fun>(f)(std::forward<Args>(args)...))
{
return std::forward<Fun>(f)(std::forward<Args>(args)...);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有