diff --git a/SimTKcommon/BigMatrix/include/SimTKcommon/internal/VectorIterator.h b/SimTKcommon/BigMatrix/include/SimTKcommon/internal/VectorIterator.h index 79c07e61e..b454fcefc 100644 --- a/SimTKcommon/BigMatrix/include/SimTKcommon/internal/VectorIterator.h +++ b/SimTKcommon/BigMatrix/include/SimTKcommon/internal/VectorIterator.h @@ -73,14 +73,14 @@ class VectorIterator { same vector as the source iterator. **/ VectorIterator& operator=(const VectorIterator& source) = default; - ELT& operator*() { + /** Dereference the iterator to access the element it points to. Note + that although the iterator may be const, it can still point to a + mutable element. **/ + ELT& operator*() const { assert (index >= 0 && index < vectorp->size()); return (*vectorp)[(int)index]; } - ELT& operator[](ptrdiff_t i) { - assert (i >= 0 && i < vectorp->size()); - return (*vectorp)[(int)i]; - } + VectorIterator& operator++() { assert (index < vectorp->size()); ++index; diff --git a/SimTKcommon/Polynomial/src/cpoly.cpp b/SimTKcommon/Polynomial/src/cpoly.cpp index 3b3b6f78d..d97b78c5a 100644 --- a/SimTKcommon/Polynomial/src/cpoly.cpp +++ b/SimTKcommon/Polynomial/src/cpoly.cpp @@ -602,7 +602,7 @@ T CPoly::scale( const int nn, const T pt[], const T eta, const T infin, const if( infin / sc > max ) sc = 1; } l = (int)( log( sc ) / log(base ) + 0.5 ); - fn_val = pow( base , l ); + fn_val = T(std::pow( base , l )); // extraneous cast required by VS 16.8.2 return fn_val; } diff --git a/SimTKcommon/Polynomial/src/rpoly.cpp b/SimTKcommon/Polynomial/src/rpoly.cpp index 10a399194..05afde29f 100644 --- a/SimTKcommon/Polynomial/src/rpoly.cpp +++ b/SimTKcommon/Polynomial/src/rpoly.cpp @@ -143,7 +143,7 @@ int RPoly::findRoots(T *op, int degree, T *zeror, T *zeroi) sc = smalno; } l = (int)(log(sc)/log(base) + 0.5); - factor = pow(base*(T) 1.0,l); + factor = T(std::pow( base, l )); // extraneous cast required by VS 16.8.2 if (factor != 1.0) { for (i=0;i<=n;i++) p[i] = factor*p[i]; /* Scale polynomial. */