[cfe-dev] Compile errors when building kde-runtime
Jordy Rose
jediknil at belkadan.com
Mon May 7 18:16:27 PDT 2012
Are we smart enough to produce a fixit for this?
Jordy
On May 7, 2012, at 19:44, Sean Silva wrote:
> It looks like its the usual "most vexing parse", with an astonishing cascade of diagnostics caused by it.
>
> It's a regrettable quirk of C++'s syntax, even has its own wikipedia page <http://en.wikipedia.org/wiki/Most_vexing_parse>.
>
> Basically, this is the problem:
>
> warning: parentheses were disambiguated as a function declarator
> [-Wvexing-parse]
> Soprano::Node dateTime( Soprano::LiteralValue(
> QDateTime::currentDateTime() )
>
> Clang sums it up quite nicely. That declaration declares a function `dateTime`, which is causing all the problems (failure to find overloads, etc.). An extra pair of parens should make the program mean what you intended (unless there's something else going on that I missed among the cascade of errors):
>
> Soprano::Node dateTime( Soprano::LiteralValue(QDateTime::currentDateTime() )
> to
> Soprano::Node dateTime( (Soprano::LiteralValue(QDateTime::currentDateTime()) )
>
> This is one reason why C++11's "uniform initialization syntax" is a win. It avoids this problem by using braces.
>
> --Sean Silva
More information about the cfe-dev
mailing list