Go to the documentation of this file. 35 #ifndef PIRANHA_FORWARDING_HPP 36 #define PIRANHA_FORWARDING_HPP 38 #include <type_traits> 50 #define PIRANHA_FORWARDING_CTOR(Derived, Base) \ 52 typename T_, typename... Args_, \ 53 typename = typename std:: \ 54 enable_if<std::is_constructible<Base, T_ &&, Args_ &&...>::value \ 55 && (sizeof...(Args_) || !std::is_base_of<Derived, typename std::decay<T_>::type>::value)>::type> \ 56 explicit Derived(T_ &&arg0, Args_ &&... args) : Base(std::forward<T_>(arg0), std::forward<Args_>(args)...) \ 68 #define PIRANHA_FORWARDING_ASSIGNMENT(Derived, Base) \ 69 template <typename T_> \ 70 typename std::enable_if<std::is_assignable<Base &, T_ &&>::value \ 71 && !std::is_base_of<Derived, typename std::decay<T_>::type>::value, \ 75 Base::operator=(std::forward<T_>(arg)); \