#6511 closed Bugs (fixed)
Division by scalar should use enable_if<>
Reported by: | Owned by: | Gunter | |
---|---|---|---|
Milestone: | Boost 1.52.0 | Component: | uBLAS |
Version: | Boost 1.48.0 | Severity: | Problem |
Keywords: | Cc: |
Description
file: vector_expression.hpp lines 1409 through 1417 function: operator/( vector, scalar)
Should be using the enable_if<> macros just like the operator*() in lines 1397 through 1407 (just above it). Doing so allows further overloading of operator/() for other types. Suggested change is...
Before:
// (v / t) [i] = v [i] / t template<class E1, class T2> BOOST_UBLAS_INLINE typename vector_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type operator / (const vector_expression<E1> &e1, const T2 &e2) { typedef typename vector_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::expression_type expression_type; return expression_type (e1 (), e2); }
After:
// (v / t) [i] = v [i] / t template<class E1, class T2> BOOST_UBLAS_INLINE typename enable_if< is_convertible<T2, typename E1::value_type >, typename vector_binary_scalar2_traits<E1, const T2, scalar_multiplies<typename E1::value_type, T2> >::result_type >::type typename vector_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type operator / (const vector_expression<E1> &e1, const T2 &e2) { typedef typename vector_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::expression_type expression_type; return expression_type (e1 (), e2); }
Change History (6)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Status: | new → assigned |
---|---|
Version: | Boost 1.48.0 → Boost 1.52.0 |
comment:3 by , 10 years ago
Milestone: | To Be Determined → Boost 1.52.0 |
---|---|
Version: | Boost 1.52.0 → Boost 1.48.0 |
updated wrong field
comment:4 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
follow-up: 6 comment:5 by , 10 years ago
Sorry to do this to you after the ticket has already closed...
But, did you happen to make the corresponding change to matrix_expression.hpp?
comment:6 by , 10 years ago
Replying to Sean Reilly <campreilly@…>:
But, did you happen to make the corresponding change to matrix_expression.hpp?
No, only vector_expression has been patched for this ticket.
(In [80270]) boost/numeric/ublas/vector_expression.hpp - use enable_if for operator/(vector, scalar), see #6511