Upgrade to C++20 (#4239)

* Use explicit this capture required by C++20
* Use C++20 span
* Replace wpi::numbers with std::numbers
* Fix C++20 clang-tidy warning false positive in fmt
* Remove ciso646 include since C++20 removed that header
* Fix global-buffer-overflow asan warnings in ntcore tests
* Add DIOSetProxy constructor to HAL

* Upgrade MSVC compiler to 2022
* Bump native-utils to 2023.2.7 (changes to std=c++20)

Co-authored-by: Peter Johnson <johnson.peter@gmail.com>
This commit is contained in:
Tyler Veness
2022-10-15 16:33:14 -07:00
committed by GitHub
parent 396143004c
commit fbdc810887
355 changed files with 1659 additions and 2918 deletions

View File

@@ -74,7 +74,7 @@ static std::vector<int> FromJavaBooleanArray(JNIEnv* env, jbooleanArray jarr) {
if (!ref) {
return {};
}
wpi::span<const jboolean> elements{ref};
std::span<const jboolean> elements{ref};
size_t len = elements.size();
std::vector<int> arr;
arr.reserve(len);
@@ -118,7 +118,7 @@ static jobject MakeJObject(JNIEnv* env, nt::Timestamped{{ t.TypeName }} value) {
{% endfor %}
{%- for t in types %}
static jobjectArray MakeJObject(JNIEnv* env,
wpi::span<const nt::Timestamped{{ t.TypeName }}> arr) {
std::span<const nt::Timestamped{{ t.TypeName }}> arr) {
jobjectArray jarr =
env->NewObjectArray(arr.size(), timestamped{{ t.TypeName }}Cls, nullptr);
if (!jarr) {
@@ -133,7 +133,7 @@ static jobjectArray MakeJObject(JNIEnv* env,
{% endfor %}
{%- for t in types %}
{%- if t.jni.ToJavaArray == "MakeJObjectArray" %}
static jobjectArray MakeJObjectArray(JNIEnv* env, wpi::span<const {{ t.cpp.ValueType }}> arr) {
static jobjectArray MakeJObjectArray(JNIEnv* env, std::span<const {{ t.cpp.ValueType }}> arr) {
jobjectArray jarr =
env->NewObjectArray(arr.size(), {{ t.jni.jtype }}Cls, nullptr);
if (!jarr) {

View File

@@ -10,7 +10,7 @@
using namespace nt;
template <typename T>
static inline wpi::span<const T> ConvertFromC(const T* arr, size_t size) {
static inline std::span<const T> ConvertFromC(const T* arr, size_t size) {
return {arr, size};
}