Browse Source

Use forwarding reference when passing function objects

So instead of passing every function objects by value (a copy is made), now function objects
will be handled properly by reference (for lvalues) or by value (for rvalues).
adaptive-webui-19844
Chocobo1 6 years ago
parent
commit
c75500670d
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 4
      src/base/algorithm.h
  2. 2
      src/base/settingvalue.h

4
src/base/algorithm.h

@ -50,7 +50,7 @@ namespace Algorithm @@ -50,7 +50,7 @@ namespace Algorithm
// To be used with associative array types, such as QMap, QHash and it's variants
template <typename T, typename BinaryPredicate
, typename std::enable_if_t<HasMappedType<T>::value, int> = 0>
void removeIf(T &dict, BinaryPredicate p)
void removeIf(T &dict, BinaryPredicate &&p)
{
auto it = dict.begin();
while (it != dict.end())
@ -60,7 +60,7 @@ namespace Algorithm @@ -60,7 +60,7 @@ namespace Algorithm
// To be used with set types, such as QSet, std::set
template <typename T, typename UnaryPredicate
, typename std::enable_if_t<!HasMappedType<T>::value, int> = 0>
void removeIf(T &set, UnaryPredicate p)
void removeIf(T &set, UnaryPredicate &&p)
{
auto it = set.begin();
while (it != set.end())

2
src/base/settingvalue.h

@ -50,7 +50,7 @@ public: @@ -50,7 +50,7 @@ public:
// T proxyFunc(const T &a);
template <typename ProxyFunc>
explicit CachedSettingValue(const char *keyName, const T &defaultValue
, ProxyFunc proxyFunc)
, ProxyFunc &&proxyFunc)
: m_keyName(QLatin1String(keyName))
, m_value(proxyFunc(loadValue(defaultValue)))
{

Loading…
Cancel
Save