Project

General

Profile

Bug #7582 ยป 0001-Trial-fix-for-perfect-forwarding-for-signals.patch

Bruce Toll, 05/25/2020 05:38 PM

View differences:

src/Wt/Chart/WCartesianChart.C
seriesSelected_.emit(closestSeries,
mapFromDeviceWithoutTransform(closestPointBeforeSeriesTransform, closestSeries->axis()));
} else {
seriesSelected_.emit(0, mapFromDeviceWithoutTransform(closestPointBeforeSeriesTransform, Axis::Y));
seriesSelected_.emit(nullptr, mapFromDeviceWithoutTransform(closestPointBeforeSeriesTransform, Axis::Y));
}
}
src/Wt/Signals/signals.hpp
}
// Emit a signal, i.e. invoke all its callbacks.
void emit (Args... args) const
template <class... B>
void emit (B&&... args) const
{
if (!callback_ring_)
return;
......
do {
if (link->active()) {
try {
link->function(std::forward<Args>(args) ...);
link->function(std::forward<B>(args) ...);
} catch (...) {
link->decref();
src/Wt/WSignal.h
* arguments.
*/
#ifndef WT_CNOR
void emit(A... args) const;
template<class... B>
void emit(B&&... args) const;
#else // WT_CNOR
void emit(A1 a1 = NoClass::none, A2 a2 = NoClass::none,
A3 a3 = NoClass::none, A4 a4 = NoClass::none,
......
* \sa emit
*/
#ifndef WT_CNOR
void operator()(A... args) const;
template<class... B>
void operator()(B&&... args) const;
#else // WT_CNOR
void operator()(A1 a1 = NoClass::none, A2 a2 = NoClass::none,
A3 a3 = NoClass::none, A4 a4 = NoClass::none,
......
}
template <class... A>
void Signal<A...>::emit(A... args) const
template <class... B>
void Signal<A...>::emit(B&&... args) const
{
impl_.emit(std::forward<A>(args)...);
impl_.emit(std::forward<B>(args)...);
}
template <class... A>
void Signal<A...>::operator()(A... args) const
template <class... B>
void Signal<A...>::operator()(B&&... args) const
{
emit(std::forward<A>(args)...);
emit(std::forward<B>(args)...);
}
template <class... A>
    (1-1/1)