aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
authorLane Kolbly <lane.kolbly@ni.com>2021-07-09 17:02:06 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2021-07-14 16:19:20 -0500
commitf47df4d1a83289043ef40469141aaa03d0c60d35 (patch)
treeba7a251348ebce47b2c1df44e40c8ffb200fc3a5 /host/include
parent14ea574bb7e1a8e6dc1d8d8935cd527b2947009c (diff)
downloaduhd-f47df4d1a83289043ef40469141aaa03d0c60d35.tar.gz
uhd-f47df4d1a83289043ef40469141aaa03d0c60d35.tar.bz2
uhd-f47df4d1a83289043ef40469141aaa03d0c60d35.zip
host: Add static_assert to prevent meta_range_t(0,0)
meta_range_t(0,0) actually calls the iterator-based constructor for meta_range_t, which is almost certainly not the intended constructor for that call syntax. Therefore, we add a static_assert to prevent such usage, and fix all failing instances.
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/types/ranges.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/host/include/uhd/types/ranges.hpp b/host/include/uhd/types/ranges.hpp
index 361b0e9d3..05aa0fa7c 100644
--- a/host/include/uhd/types/ranges.hpp
+++ b/host/include/uhd/types/ranges.hpp
@@ -9,6 +9,7 @@
#include <uhd/config.hpp>
#include <string>
+#include <type_traits>
#include <vector>
namespace uhd {
@@ -76,6 +77,14 @@ struct UHD_API meta_range_t : std::vector<range_t>
meta_range_t(InputIterator first, InputIterator last)
: std::vector<range_t>(first, last)
{ /* NOP */
+ // This is to avoid people accidentally doing silly things like:
+ // meta_range_t(0, 0)
+ // which probably was supposed to call meta_range_t(double, double, double)
+ // but actually calls this constructor.
+ static_assert(
+ !std::is_integral<typename std::decay<InputIterator>::type>::value,
+ "You can't pass integers to meta_range_t's constructor!"
+ );
}
/*!