Ticket #6511 (closed Bugs: fixed)
Division by scalar should use enable_if<>
Reported by: | Sean Reilly <campreilly@…> | Owned by: | guwi17 |
---|---|---|---|
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); }
Attachments
Change History
comment:2 Changed 19 months ago by guwi17
- Status changed from new to assigned
- Version changed from Boost 1.48.0 to Boost 1.52.0
comment:3 Changed 19 months ago by guwi17
- Version changed from Boost 1.52.0 to Boost 1.48.0
- Milestone changed from To Be Determined to Boost 1.52.0
updated wrong field ^{}
comment:4 Changed 19 months ago by guwi17
- Status changed from assigned to closed
- Resolution set to fixed
comment:5 follow-up: ↓ 6 Changed 16 months ago by Sean Reilly <campreilly@…>
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 in reply to: ↑ 5 Changed 16 months ago by guwi17
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