|
Boost : |
From: helmut.zeisel_at_[hidden]
Date: 2001-10-09 02:33:07
--- In boost_at_y..., Darin Adler <darin_at_b...> wrote:
> on 10/8/01 9:13 AM, williamkempf_at_h... at williamkempf_at_h...
> wrote:
>
> >> 2) For some reason, "thrd" is parsed as a function pointer,
> >> not as an object of class boost::thread.
> >
> > Interesting. Any standards experts wich to comment on whether
this
> > is a VC++ bug or a mistake in the example code? I can change the
> > code to use two lines in the documentation.
>
> It's a mistake in the example code. This is one of the most common
C++
> mistakes. The rule is sometimes summarized as, "if it looks like a
function
> declaration, it is a function declaration". Reams have been written
about
> this idiosyncrasy of C++ syntax.
>
GCC 3.0.1 reacts in a similar way as VC++.
In addition, writing
boost::thread thrd=thread_alarm(secs);
gives the error message
"conversion from `thread_alarm'
to non-scalar type `boost::thread' requested"
on GCC 3.0.1 and a similar error message under VC++.
This is in concordance with the interpretation of thrd as
a function pointer when writing
boost::thread thrd(thread_alarm(secs));
What I do not understand, however, is why
the two-line version
thread_alarm fct(secs);
boost::thread thrd(fct);
and the "pointer" version
boost::thread* thrdp= new boost::thread(thread_alarm(secs));
work.
Why is the conversion from thread_alarm to boost::thread
found in the latter cases?
Helmut
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk