[GRASS-dev] Compiling r.viewshed and r.terraflow with C++11

Vaclav Petras wenzeslaus at gmail.com
Mon Dec 9 20:21:11 PST 2013


Hi,

the r.viewshed and r.terraflow modules needs fix to compile with C++11. The
errors are:

 error: reference to 'is_empty' is ambiguous
 error: reference to 'is_void' is ambiguous

The cause are the functions in modules which are named in the same way as
functions newly added in C++11. The problem is actually caused by the fact
that modules are using

 using namespace std;

As explained by Glynn in [1] rewriting modules in the way that they don't
use `std` namespace in this way could be difficult.

So my question is, was this fixed in the time of [1]? It is not clear from
the discussion. If not, what is the right fix?

I suggest to put these functions into some namespace (I was not thinking
about name yet) and using these functions with a namespace. There is only
limited number of calls of these functions. Do you think it is a good idea?

Apparently, this issue needs to be fixed because on Mac OS X Mavericks it
is already an issue (C++11 is the default as predicted by Glynn in [1]).
Compile error should be reproducible with older GCC/clang by adding
`-std=c++11` option.

Vaclav

[1] Grass SVN in Android, display issue,
http://lists.osgeo.org/pipermail/grass-dev/2012-September/060088.html,
http://osgeo-org.1560.x6.nabble.com/Grass-SVN-in-Android-display-issue-td5002221.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20131209/e9b44a30/attachment.html>


More information about the grass-dev mailing list