[GRASS-dev] Compiling r.viewshed and r.terraflow with C++11
Glynn Clements
glynn at gclements.plus.com
Tue Dec 10 02:41:18 PST 2013
Vaclav Petras wrote:
> So my question is, was this fixed in the time of [1]? It is not clear from
> the discussion.
No.
> If not, what is the right fix?
The right fix is to remove all occurrences of "using namespace std;",
then fix the (probably hundreds) of errors which arise, either by
using qualified names (e.g. std::vector) or by adding "using"
statements for individual names (e.g. "using std::vector;").
[Note that iostream uses templates, so it might matter which approach
is taken. A qualified name forces the use of a specific function (or
type, etc), whereas a "using" statement adds the name as a fallback
but argument-dependent lookup takes priority.]
A more comprehensive fix would be to simply not accept code written in
C++. It's a deceptively complex language, and writing portable C++
code is significantly harder than writing "works-on-my-system" code.
Consequently, a very large proportion of C++ code falls into the
latter category.
That isn't a problem if you're writing something for your personal use
and you're willing to abandon it once it no longer compiles on current
systems. OTOH, it is a problem for a project like GRASS, which aims to
support multiple platforms over the long term.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list