Remove wpi::ArrayRef std::initializer_list constructor (#1745)

This can be dangerous as it refers to a temporary, and GCC 9.0 warns about
its use.  Instead add std::initializer_list overloads to common places it
was used in an initializer_list sense.
This commit is contained in:
Peter Johnson
2019-06-29 23:54:02 -07:00
committed by GitHub
parent 9e19b29c31
commit 60dce66a4f
17 changed files with 482 additions and 59 deletions

View File

@@ -7,6 +7,7 @@
#pragma once
#include <initializer_list>
#include <vector>
#include <wpi/ArrayRef.h>
@@ -75,6 +76,17 @@ class LinearFilter {
*/
LinearFilter(wpi::ArrayRef<double> ffGains, wpi::ArrayRef<double> fbGains);
/**
* Create a linear FIR or IIR filter.
*
* @param ffGains The "feed forward" or FIR gains.
* @param fbGains The "feed back" or IIR gains.
*/
LinearFilter(std::initializer_list<double> ffGains,
std::initializer_list<double> fbGains)
: LinearFilter(wpi::makeArrayRef(ffGains.begin(), ffGains.end()),
wpi::makeArrayRef(fbGains.begin(), fbGains.end())) {}
LinearFilter(LinearFilter&&) = default;
LinearFilter& operator=(LinearFilter&&) = default;

View File

@@ -7,6 +7,7 @@
#pragma once
#include <initializer_list>
#include <memory>
#include <vector>
@@ -81,6 +82,17 @@ class LinearDigitalFilter : public Filter {
LinearDigitalFilter(PIDSource& source, wpi::ArrayRef<double> ffGains,
wpi::ArrayRef<double> fbGains);
/**
* Create a linear FIR or IIR filter.
*
* @param source The PIDSource object that is used to get values
* @param ffGains The "feed forward" or FIR gains
* @param fbGains The "feed back" or IIR gains
*/
WPI_DEPRECATED("Use LinearFilter class instead.")
LinearDigitalFilter(PIDSource& source, std::initializer_list<double> ffGains,
std::initializer_list<double> fbGains);
/**
* Create a linear FIR or IIR filter.
*
@@ -93,6 +105,18 @@ class LinearDigitalFilter : public Filter {
wpi::ArrayRef<double> ffGains,
wpi::ArrayRef<double> fbGains);
/**
* Create a linear FIR or IIR filter.
*
* @param source The PIDSource object that is used to get values
* @param ffGains The "feed forward" or FIR gains
* @param fbGains The "feed back" or IIR gains
*/
WPI_DEPRECATED("Use LinearFilter class instead.")
LinearDigitalFilter(std::shared_ptr<PIDSource> source,
std::initializer_list<double> ffGains,
std::initializer_list<double> fbGains);
LinearDigitalFilter(LinearDigitalFilter&&) = default;
LinearDigitalFilter& operator=(LinearDigitalFilter&&) = default;