Description
In case there is some interest regarding the usability of CppADCodeGen within Windows (e.g. VS 2015) I'd like to share a few basic compatibilty issues.
In fact, these are rather minor but have quite an impact since they appear in several places throughout all the source code.
Therefore, in the following I list representative examples and suggestions for their principle replacements which should work for both, Windows and Linux (g++):
-
suggested change of, e.g.,
std::max(size_t(123), 124)
tostd::max<size_t>(size_t(123), 124)
andstd::min(size_t(123), 124)
tostd::min<size_t>(size_t(123), 124)
, i.e. std::max/std::min should carry a template argument specifying the data type which is relevant for the two passed numbers. -
suggested change of, e.g.,
std::numeric_limits<int>::max()
to(std::numeric_limits<int>::max)()
andstd::numeric_limits<int>::min()
to(std::numeric_limits<int>::min)()
-
there exist some problems with the operator
<<
, it's overloading and the typesize_t
/__int64
in Windows. This, at least, applies only to recent changes (commit from Jun 13, 2019) and, so far, can be easily fixed in /lang/lang_stream_stack.hpp by adding:
friend inline LangStreamStack<Base>& operator<<(LangStreamStack<Base>& lss, size_t i) {
return (lss << std::to_string(i));
}