Is this example, contained in the boost.Proto manual supposed to
compile?
#include<complex>
#include
#include
#include
#include
template
struct my_complex
{
BOOST_PROTO_EXTENDS(
typename boost::proto::terminal::type
, my_complex<T>
, boost::proto::default_domain
)
};
int main()
{
my_complex<int> c0, c1;
c0 + c1; // OK, operator+ found now!
}
I get this error (with gcc 4.3 and gcc 4.4):
proto_complex.cpp:10: error: expected nested-name-specifier before
‘typename’
proto_complex.cpp:10: error: two or more data types in declaration of
‘proto_base_expr’
proto_complex.cpp:10: error: ‘proto_base_expr’ has not been declared
proto_complex.cpp:10: error: ‘proto_base_expr’ has not been declared
The strangest thing is that when I replace the macro by its explicit
code the code seems to compile.
Thank you,
Alfredo