Quantuccia icon indicating copy to clipboard operation
Quantuccia copied to clipboard

weird compilation error when including basisincompleteordered.hpp from all.hpp

Open pcaspers opened this issue 8 years ago • 0 comments

when having this in ql/math/matrixutilities/all.hpp,

#include <ql/math/matrixutilities/basisincompleteordered.hpp> // causes weird compile error

I get this compiler error (e.g. when doing make in the check subfolder)

g++ -Wall -Wno-unknown-pragmas -Werror -std=c++03 -I.. checkduplicatesymbols1.cpp checkduplicatesymbols2.cpp main.cpp -o main
In file included from checkduplicatesymbols1.cpp:1:
In file included from ../ql/quantlib.hpp:39:
In file included from ../ql/math/all.hpp:35:
In file included from ../ql/math/matrixutilities/all.hpp:1:
In file included from ../ql/math/matrixutilities/basisincompleteordered.hpp:25:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/valarray:3766:53: error: 
      'value_type' is a private member of
      'boost::iterators::detail::operator_brackets_proxy<boost::iterators::permutation_iterator<std::__1::__wrap_iter<double *>,
      std::__1::__wrap_iter<unsigned long *> > >'
    __val_expr<_BinaryOp<multiplies<typename _Expr::value_type>,
                                                    ^
../ql/methods/montecarlo/brownianbridge.hpp:114:42: note: while substituting deduced template arguments into function template
      'operator*' [with _Expr =
      boost::iterators::detail::operator_brackets_proxy<boost::iterators::permutation_iterator<std::__1::__wrap_iter<double *>,
      std::__1::__wrap_iter<unsigned long *> > >]
            output[size_-1] = stdDev_[0] * begin[0];
                                         ^
../ql/models/marketmodels/browniangenerators/sobolbrowniangenerator.hpp:255:25: note: in instantiation of function template
      specialization 'QuantLib::BrownianBridge::transform<boost::iterators::permutation_iterator<std::__1::__wrap_iter<double *>,
      std::__1::__wrap_iter<unsigned long *> >, std::__1::__wrap_iter<double *> >' requested here
                bridge_.transform(boost::make_permutation_iterator(
                        ^

pcaspers avatar Nov 04 '17 19:11 pcaspers