Re: Compiler bug in Market Models???
Posted by
Joseph Wang-2 on
Jul 09, 2006; 7:02am
URL: http://quantlib.414.s1.nabble.com/Compiler-bug-in-Market-Models-tp4910p4911.html
Doing some more googling, it turns out that this really does require a
language lawyer, since it involves an issue in the C++ standard, that the
standards committee not resolved yet.
See
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57for the gory details. The g++ have a patch that will parse the code, but they
haven't applied it yet pending a decision of the C++ standards committee.
在 Saturday 08 July 2006 23:45,Joseph Wang 写道:
> Need a language lawyer :-) :-) :-)
>
> g++ 4.0 on Linux is choking on
>
> EvolutionDescription(
> const Array& rateTimes,
> const Array& evolutionTimes,
> const std::vector<Size>& numeraires = std::vector<Size>(),
> const std::vector<std::pair<Size,Size> > &relevanceRates =
> std::vector<std::pair<Size,Size> >
> ());
>
> with
>
> ../../ql/MarketModels/evolutiondescription.hpp:62: error: expected ‘,’
> or ‘...’ before ‘>’ token
> ../../ql/MarketModels/evolutiondescription.hpp:62: error: wrong number of
> template arguments (1, should be 2)
> /usr/lib/gcc/i586-mandriva-linux-gnu/4.1.1/../../../../include/c++/4.1.1/bi
>ts/stl_pair.h:68: error: provided for ‘template<class _T1, class _T2> struct
> std::pair’ ../../ql/MarketModels/evolutiondescription.hpp:62: error:
> template argument 1 is invalid
> ../../ql/MarketModels/evolutiondescription.hpp:62: error: template argument
> 2 is invalid
> ../../ql/MarketModels/evolutiondescription.hpp:62: error: default argument
> missing for parameter 5
> of ‘QuantLib::EvolutionDescription::EvolutionDescription(const
> QuantLib::Array&, const QuantLib::Array&, const std::vector<unsigned int,
> std::allocator<unsigned int> >&, const std::vector<std::pair<unsigned int,
> unsigned int>, std::allocator<std::pair<unsigned int, unsigned int> > >&,
> QuantLib::Size)’
>
> But it works if I typedef the template
>
> typedef std::vector<std::pair<Size,Size> > RelevanceRatesType;
> EvolutionDescription(
> const Array& rateTimes,
> const Array& evolutionTimes,
> const std::vector<Size>& numeraires = std::vector<Size>(),
> const std::vector<std::pair<Size,Size> > &relevanceRates =
> RelevanceRatesType ());
>
> is G++ broken?