
AMDG Neal Becker wrote:
This code has an error:
#include <boost/numeric/ublas/vector.hpp> #include <boost/constrained_value.hpp>
namespace cv = boost::constrained_value; namespace ublas = boost::numeric::ublas;
typedef cv::bounded<int>::type val_t; typedef cv::bounded<int>::type::constraint_type constraint_type;
int main() { int min = -200; int max = 200; val_t init (10, constraint_type (min, max)); ublas::vector<val_t> v (10, init); ublas::vector<val_t> w = -v; }
This code will throw an exception. The last line invokes: ublas/functional.hpp:70 (scalar_negate), which for some reason calls
constrained.hpp:224, which is: constrained(const value_type & v)
That is, initialize only the value, not the constraint! Any ideas?
It looks like the arithmetic operators may need to be overloaded rather than relying on implicit conversions? The error should occur in a simpler case: val_t x(10, constraint_type(min, max)); val_t neg_x(-x); In Christ, Steven Watanabe