diff --git a/exprtk.hpp b/exprtk.hpp index 7dd90e0..e0eb192 100644 --- a/exprtk.hpp +++ b/exprtk.hpp @@ -820,6 +820,11 @@ namespace exprtk return std::not_equal_to()(v,v); } + template + inline bool is_nan_impl(const T v, int_type_tag) { + return std::not_equal_to()(v, v); + } + template inline int to_int32_impl(const T v, real_type_tag) { @@ -838,6 +843,11 @@ namespace exprtk return static_cast(v); } + template + inline long long int to_int64_impl(const T v, int_type_tag) { + return static_cast(v); + } + template inline bool is_true_impl(const T v) { @@ -1980,6 +1990,12 @@ namespace exprtk return true; } + template + inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::int_type_tag) { + numeric::details::real_type_tag rtt; + return string_to_real(itr_external, end, t, rtt); + } + template inline bool string_to_real(const std::string& s, T& t) { @@ -8564,9 +8580,9 @@ namespace exprtk { std::size_t size = std::min((s0_r1 - s0_r0),(s1_r1 - s1_r0)) + 1; - std::copy(str1_base_ptr_->base() + s1_r0, - str1_base_ptr_->base() + s1_r0 + size, - const_cast(base() + s0_r0)); + std::copy_n(str1_base_ptr_->base() + s1_r0, + size, + std::back_inserter(str0_node_ptr_->ref())); } }