store the value to be set inside wxON_BLOCK_EXIT_SET(), this allows to use temporaries with it and also fixes the test failure when built with icc and optimizations on (not sure if it is a compiler bug or not but in any case it seems better to fix it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56848 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -411,7 +411,7 @@ template <typename T, typename U>
|
|||||||
class VariableSetterImpl : public VariableSetterBase
|
class VariableSetterImpl : public VariableSetterBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VariableSetterImpl(T& var, const U& value)
|
VariableSetterImpl(T& var, U value)
|
||||||
: m_var(var),
|
: m_var(var),
|
||||||
m_value(value)
|
m_value(value)
|
||||||
{
|
{
|
||||||
@@ -424,7 +424,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
T& m_var;
|
T& m_var;
|
||||||
const U& m_value;
|
const U m_value;
|
||||||
|
|
||||||
// suppress the warning about assignment operator not being generated
|
// suppress the warning about assignment operator not being generated
|
||||||
VariableSetterImpl<T, U>& operator=(const VariableSetterImpl<T, U>&);
|
VariableSetterImpl<T, U>& operator=(const VariableSetterImpl<T, U>&);
|
||||||
@@ -454,7 +454,7 @@ private:
|
|||||||
|
|
||||||
template <typename T, typename U>
|
template <typename T, typename U>
|
||||||
inline
|
inline
|
||||||
wxPrivate::VariableSetterImpl<T, U> wxMakeVarSetter(T& var, const U& value)
|
wxPrivate::VariableSetterImpl<T, U> wxMakeVarSetter(T& var, U value)
|
||||||
{
|
{
|
||||||
return wxPrivate::VariableSetterImpl<T, U>(var, value);
|
return wxPrivate::VariableSetterImpl<T, U>(var, value);
|
||||||
}
|
}
|
||||||
|
@@ -131,6 +131,9 @@ wxScopeGuard wxMakeGuard(F func, P1 p1, ..., PN pN);
|
|||||||
}
|
}
|
||||||
@endcode
|
@endcode
|
||||||
|
|
||||||
|
Notice that @a value is copied, i.e. stored by value, so it can be a
|
||||||
|
temporary object returned by a function call, for example.
|
||||||
|
|
||||||
@see wxON_BLOCK_EXIT_OBJ0(), wxON_BLOCK_EXIT_NULL()
|
@see wxON_BLOCK_EXIT_OBJ0(), wxON_BLOCK_EXIT_NULL()
|
||||||
|
|
||||||
@header{wx/scopeguard.h}
|
@header{wx/scopeguard.h}
|
||||||
|
Reference in New Issue
Block a user