@@ -421,10 +421,10 @@ namespace delegate
421
421
DelegatePImpl::fn = fn;
422
422
}
423
423
424
- template <typename F> DelegatePImpl (F fn )
424
+ template <typename F> DelegatePImpl (F functional )
425
425
{
426
426
kind = FP;
427
- DelegatePImpl:: fn = std::forward<F>(fn );
427
+ fn = std::forward<F>(functional );
428
428
}
429
429
430
430
DelegatePImpl& operator =(const DelegatePImpl& del)
@@ -1683,15 +1683,15 @@ namespace delegate
1683
1683
static_cast <const detail::DelegatePImpl<A, R, P...>&>(del)) {}
1684
1684
1685
1685
Delegate (Delegate&& del) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(
1686
- std::move (static_cast <detail::DelegatePImpl<A, R, P...>&& >(del))) {}
1686
+ std::move (static_cast <detail::DelegatePImpl<A, R, P...>&>(del))) {}
1687
1687
1688
1688
Delegate (FunAPtr fnA, const A& obj) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(fnA, obj) {}
1689
1689
1690
1690
Delegate (FunAPtr fnA, A&& obj) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(fnA, std::move(obj)) {}
1691
1691
1692
1692
Delegate (FunPtr fn) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(fn) {}
1693
1693
1694
- template <typename F> Delegate (F functional) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(functional) {}
1694
+ template <typename F> Delegate (F functional) : detail::DelegatePImpl<A, R, P...>::DelegatePImpl(std::forward<F>( functional) ) {}
1695
1695
1696
1696
Delegate& operator =(const Delegate& del) {
1697
1697
detail::DelegatePImpl<A, R, P...>::operator =(del);
@@ -1764,13 +1764,13 @@ namespace delegate
1764
1764
static_cast <const detail::DelegatePImpl<A*, R, P...>&>(del)) {}
1765
1765
1766
1766
Delegate (Delegate&& del) : detail::DelegatePImpl<A*, R, P...>::DelegatePImpl(
1767
- std::move (static_cast <detail::DelegatePImpl<A*, R, P...>&& >(del))) {}
1767
+ std::move (static_cast <detail::DelegatePImpl<A*, R, P...>&>(del))) {}
1768
1768
1769
1769
Delegate (FunAPtr fnA, A* obj) : detail::DelegatePImpl<A*, R, P...>::DelegatePImpl(fnA, obj) {}
1770
1770
1771
1771
Delegate (FunPtr fn) : detail::DelegatePImpl<A*, R, P...>::DelegatePImpl(fn) {}
1772
1772
1773
- template <typename F> Delegate (F functional) : detail::DelegatePImpl<A*, R, P...>::DelegatePImpl(functional) {}
1773
+ template <typename F> Delegate (F functional) : detail::DelegatePImpl<A*, R, P...>::DelegatePImpl(std::forward<F>( functional) ) {}
1774
1774
1775
1775
Delegate& operator =(const Delegate& del) {
1776
1776
detail::DelegatePImpl<A*, R, P...>::operator =(del);
@@ -1822,11 +1822,11 @@ namespace delegate
1822
1822
static_cast <const detail::DelegatePImpl<void , R, P...>&>(del)) {}
1823
1823
1824
1824
Delegate (Delegate&& del) : detail::DelegatePImpl<void, R, P...>::DelegatePImpl(
1825
- std::move (static_cast <detail::DelegatePImpl<void , R, P...>&& >(del))) {}
1825
+ std::move (static_cast <detail::DelegatePImpl<void , R, P...>&>(del))) {}
1826
1826
1827
1827
Delegate (FunPtr fn) : detail::DelegatePImpl<void, R, P...>::DelegatePImpl(fn) {}
1828
1828
1829
- template <typename F> Delegate (F functional) : detail::DelegatePImpl<void, R, P...>::DelegatePImpl(functional) {}
1829
+ template <typename F> Delegate (F functional) : detail::DelegatePImpl<void, R, P...>::DelegatePImpl(std::forward<F>( functional) ) {}
1830
1830
1831
1831
Delegate& operator =(const Delegate& del) {
1832
1832
detail::DelegatePImpl<void , R, P...>::operator =(del);
@@ -1879,15 +1879,15 @@ namespace delegate
1879
1879
static_cast <const detail::DelegateImpl<A, R>&>(del)) {}
1880
1880
1881
1881
Delegate (Delegate&& del) : detail::DelegateImpl<A, R>::DelegateImpl(
1882
- std::move (static_cast <detail::DelegateImpl<A, R>&& >(del))) {}
1882
+ std::move (static_cast <detail::DelegateImpl<A, R>&>(del))) {}
1883
1883
1884
1884
Delegate (FunAPtr fnA, const A& obj) : detail::DelegateImpl<A, R>::DelegateImpl(fnA, obj) {}
1885
1885
1886
1886
Delegate (FunAPtr fnA, A&& obj) : detail::DelegateImpl<A, R>::DelegateImpl(fnA, std::move(obj)) {}
1887
1887
1888
1888
Delegate (FunPtr fn) : detail::DelegateImpl<A, R>::DelegateImpl(fn) {}
1889
1889
1890
- template <typename F> Delegate (F functional) : detail::DelegateImpl<A, R>::DelegateImpl(functional) {}
1890
+ template <typename F> Delegate (F functional) : detail::DelegateImpl<A, R>::DelegateImpl(std::forward<F>( functional) ) {}
1891
1891
1892
1892
Delegate& operator =(const Delegate& del) {
1893
1893
detail::DelegateImpl<A, R>::operator =(del);
@@ -1960,13 +1960,13 @@ namespace delegate
1960
1960
static_cast <const detail::DelegateImpl<A*, R>&>(del)) {}
1961
1961
1962
1962
Delegate (Delegate&& del) : detail::DelegateImpl<A*, R>::DelegateImpl(
1963
- std::move (static_cast <detail::DelegateImpl<A*, R>&& >(del))) {}
1963
+ std::move (static_cast <detail::DelegateImpl<A*, R>&>(del))) {}
1964
1964
1965
1965
Delegate (FunAPtr fnA, A* obj) : detail::DelegateImpl<A*, R>::DelegateImpl(fnA, obj) {}
1966
1966
1967
1967
Delegate (FunPtr fn) : detail::DelegateImpl<A*, R>::DelegateImpl(fn) {}
1968
1968
1969
- template <typename F> Delegate (F functional) : detail::DelegateImpl<A*, R>::DelegateImpl(functional) {}
1969
+ template <typename F> Delegate (F functional) : detail::DelegateImpl<A*, R>::DelegateImpl(std::forward<F>( functional) ) {}
1970
1970
1971
1971
Delegate& operator =(const Delegate& del) {
1972
1972
detail::DelegateImpl<A*, R>::operator =(del);
@@ -2018,11 +2018,11 @@ namespace delegate
2018
2018
static_cast <const detail::DelegateImpl<void , R>&>(del)) {}
2019
2019
2020
2020
Delegate (Delegate&& del) : detail::DelegateImpl<void, R>::DelegateImpl(
2021
- std::move (static_cast <detail::DelegateImpl<void , R>&& >(del))) {}
2021
+ std::move (static_cast <detail::DelegateImpl<void , R>&>(del))) {}
2022
2022
2023
2023
Delegate (FunPtr fn) : detail::DelegateImpl<void, R>::DelegateImpl(fn) {}
2024
2024
2025
- template <typename F> Delegate (F functional) : detail::DelegateImpl<void, R>::DelegateImpl(functional) {}
2025
+ template <typename F> Delegate (F functional) : detail::DelegateImpl<void, R>::DelegateImpl(std::forward<F>( functional) ) {}
2026
2026
2027
2027
Delegate& operator =(const Delegate& del) {
2028
2028
detail::DelegateImpl<void , R>::operator =(del);
@@ -2059,15 +2059,15 @@ template<typename A, typename R, typename... P> class Delegate<R(P...), A> : pub
2059
2059
static_cast <const delegate::detail::Delegate<A, R, P...>&>(del)) {}
2060
2060
2061
2061
Delegate (Delegate&& del) : delegate::detail::Delegate<A, R, P...>::Delegate(
2062
- std::move (static_cast <delegate::detail::Delegate<A, R, P...>&& >(del))) {}
2062
+ std::move (static_cast <delegate::detail::Delegate<A, R, P...>&>(del))) {}
2063
2063
2064
2064
Delegate (typename delegate::detail::Delegate<A, R, P...>::FunAPtr fnA, const A& obj) : delegate::detail::Delegate<A, R, P...>::Delegate(fnA, obj) {}
2065
2065
2066
2066
Delegate (typename delegate::detail::Delegate<A, R, P...>::FunAPtr fnA, A&& obj) : delegate::detail::Delegate<A, R, P...>::Delegate(fnA, std::move(obj)) {}
2067
2067
2068
2068
Delegate (typename delegate::detail::Delegate<A, R, P...>::FunPtr fn) : delegate::detail::Delegate<A, R, P...>::Delegate(fn) {}
2069
2069
2070
- template <typename F> Delegate (F functional) : delegate::detail::Delegate<A, R, P...>::Delegate(functional) {}
2070
+ template <typename F> Delegate (F functional) : delegate::detail::Delegate<A, R, P...>::Delegate(std::forward<F>( functional) ) {}
2071
2071
2072
2072
Delegate& operator =(const Delegate& del) {
2073
2073
delegate::detail::Delegate<A, R, P...>::operator =(del);
@@ -2089,6 +2089,7 @@ template<typename A, typename R, typename... P> class Delegate<R(P...), A> : pub
2089
2089
return *this ;
2090
2090
}
2091
2091
};
2092
+
2092
2093
template <typename R, typename ... P> class Delegate <R(P...)> : public delegate::detail::Delegate<void , R, P...>
2093
2094
{
2094
2095
public:
@@ -2100,11 +2101,11 @@ template<typename R, typename... P> class Delegate<R(P...)> : public delegate::d
2100
2101
static_cast <const delegate::detail::Delegate<void , R, P...>&>(del)) {}
2101
2102
2102
2103
Delegate (Delegate&& del) : delegate::detail::Delegate<void , R, P...>::Delegate(
2103
- std::move (static_cast <delegate::detail::Delegate<void , R, P...>&& >(del))) {}
2104
+ std::move (static_cast <delegate::detail::Delegate<void , R, P...>&>(del))) {}
2104
2105
2105
2106
Delegate (typename delegate::detail::Delegate<void , R, P...>::FunPtr fn) : delegate::detail::Delegate<void, R, P...>::Delegate(fn) {}
2106
2107
2107
- template <typename F> Delegate (F functional) : delegate::detail::Delegate<void, R, P...>::Delegate(functional) {}
2108
+ template <typename F> Delegate (F functional) : delegate::detail::Delegate<void, R, P...>::Delegate(std::forward<F>( functional) ) {}
2108
2109
2109
2110
Delegate& operator =(const Delegate& del) {
2110
2111
delegate::detail::Delegate<void , R, P...>::operator =(del);
0 commit comments