|
Boost : |
From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2006-01-17 05:06:23
Forgot something...
Tobias Schwinger wrote:
> template<typename T>
> class a_rule_parser_template
> : boost::spirit::parser< a_rule_parser_template<T> >
> {
> T a_placeholder;
>
> struct __rule
> {
> // hide the placeholder member variable of the outer class with a static
> // variable of the same type
> static T & a_placeholder;
>
> typedef BOOST_TYPEOF_TPL( an_expression ) type;
Line 77 ^^
Typeof acts like a black hole in this context; the "laws of C++ physics" seem not
to apply any longer. There should be absolutely no reason for deduction to fail
like this:
test.cpp(77) : error C2784: 'boost::spirit::positive<S> boost::spirit::operator
+(const boost::spirit::parser<DerivedT> &)' : could not deduce template argument
for 'const boost::spirit::parser<DerivedT> &' from 'T'
e:\Libs\Boost\MainCVS2\boost/spirit/core/composite/positive.hpp(93) :
see declaration of 'boost::spirit::operator +'
test.cpp(72) : see reference to class template instantiation
'a_rule_parser_template<T>::__rule' being compiled
test.cpp(89) : see reference to class template instantiation
'a_rule_parser_template<T>' being compiled
test.cpp(77) : error C2675: unary '+' : 'T' does not define this operator or a
conversion to a type acceptable to the predefined operator
test.cpp(77) : error C2784: 'boost::spirit::positive<S> boost::spirit::operator
+(const boost::spirit::parser<DerivedT> &)' : could not deduce template argument
for 'const boost::spirit::parser<DerivedT> &' from 'T'
e:\Libs\Boost\MainCVS2\boost/spirit/core/composite/positive.hpp(93) : see
declaration of 'boost::spirit::operator +'
test.cpp(77) : error C2675: unary '+' : 'T' does not define this operator or a
conversion to a type acceptable to the predefined operator
test.cpp(77) : error C2784: 'boost::spirit::positive<S> boost::spirit::operator
+(const boost::spirit::parser<DerivedT> &)' : could not deduce template argument
for 'const boost::spirit::parser<DerivedT> &' from 'T'
e:\Libs\Boost\MainCVS2\boost/spirit/core/composite/positive.hpp(93) : see
declaration of 'boost::spirit::operator +'
[...] last two messages repeat several times
-- Tobias
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk