This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Switching to C++ by default in 4.8

On Wednesday 11 of April 2012 11:43:36 Richard Guenther wrote:

> > () The overloadable operator new means that memory can be
> > _implicitly_ allocated in the right place.
> Implicit allocation is bad.  In a compiler you want to _see_ where you
> spend memory.

in c++ you can overload new/delete operators for each class and track
all these allocations with provided allocator. please consider following
you can bind polls, gc or anything else you want for any class
and just use the new/delete keywords in sources as usual.
in pure C you need to call the right malloc_*/free_* variants for each class.

> > () Class hierarchies also mean that programmers can distinguish
> > in the pointer types that a function needs a decl parameter,
> > without having to say 'all trees' versus 'a very specific tree'.
> > The static type checking avoids run-time bugs.
> True.  In a very limited set of cases.  C++ is not powerful enough
> to express pointer-to-everything-that-would-be-considered-a-gimple-val.
> Maybe C++ is not the right choice after all?  (I suppose C++ concepts
> would have helped here? pointer-to-tree-that-fulfils-is_gimple_val ...
> (though is_gimple_val is not be a static property).

hmm :)
the c# provides a nice constraints engine (google the 'where' keyword)
and the so-called duck-typing (c# 4.0) which might simplfy the source
code that operates on ast nodes.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]