6 ms·
GCC 4.8 Has Automatic Return Type Deduction
- kombine 14y agoIt'll take years before it becomes part of the spec and all other implementations will catch up. D had it for ages.
- deleted 14y ago[deleted]
- stingraycharles 14y agoNo it isn't: "[..] This functionality was proposed previously in N2954, but dropped from C++11 due to time constraints" http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n338...
- demetrius 14y agoSorry, I was mistaken. -_-"
- indeyets 14y agoI used to be c++ "guru" some years ago, but right now code like this scares me as hell. The language is getting less-used and it's a good thing http://www.tiobe.com/index.php/paperinfo/tpci/C__.html http://www.tiobe.com/index.php/paperinfo/tpci/C__.html How many years would you give it to stay ubiquitous? I bet on 15 years
- udp 14y agoI was just about to make a similar comment. There isn't much about C++98 I don't know, but having ignored C++11 for too long I feel utterly lost looking at stuff like this now. What concerns me even more is that it must be pretty much impossible for a beginner to pick up C++ today.
- pjmlp 14y agoAnyone can pick it up if they really care. They don't need to know the complete language on day 1.
- fceccon 14y agoAs a beginner programmer (a.k.a. CS student) I was able to pickup the basic of the language in the last 2 months and work on a real world (not a school project, it's a library that other universities use) cuda c++ project. I read a book so I have an idea of what can and can't be done, but when I need to implement something unusual (ie function object) I need to lookup it in the book or ask for help to my mentor. I still need help to understand gcc errors, cuda uses an "old" version (3.4 I think) so we don't get the improvements of the new versions.
- pjmlp 14y agoYes, you always need to look things up. In the projects I take part on, with teams from 20 - 100 developers, you cannot know everything regardless of the language.
- fafner 14y ago> What concerns me even more is that it must be pretty much impossible for a beginner to pick up C++ today. There certainly are issues when learning C++. But I don't think it's impossible. A major concern is the fact that there was never a centralised website collecting good information and filtering out the crap. There never was a central Tutorial or Reference. All the knowledge is hidden in very expensive books and worst of all there are many publishers simply spitting out piles of bad C++ books. http://isocpp.org/ http://isocpp.org/ and http://en.cppreference.com/w/ http://en.cppreference.com/w/ are a huge improvement. Stroustrup's book is a great introduction: http://www.stroustrup.com/Programming/ http://www.stroustrup.com/Programming/ I wish he'd made it freely available. A lot of programming beginners aren't happy to pay $50-$70 for a book when they can go to other languages offering great beginner tutorials for free. And C++11 is pretty new. So of course there is a transition period with books, articles, references catching on.
- pjmlp 14y agoI am still waiting to see a language that can fully replace it.
- indeyets 14y agoI'm not sure that's needed. It would be much better if parts of it are replaced by different languages (and that's exactly what's happening) haskell, python, erlang, clojure, scala, d, go, lua… take the tasks one by one. the glue is C (but something like llvm-assembly might take it's place eventually)
- pjmlp 14y agoA language able to do multi-paradigm programming while giving the ability to do low level stuff as well as high level programming, while compiling to native code. I really miss the ability to compile to native code in most implementations for mainstream languages nowadays. I am looking forward to D and Rust, but it will take ages before any of them really get into mainstream. C, well I haven't touched it since 2001.
- lmm 14y ago>I really miss the ability to compile to native code in most implementations for mainstream languages nowadays. What's your use case for it? Is it covered by .net's (often overlooked) native compilation capabilities?
- pjmlp 14y agoTrue, but it is one specific case and not multi-platform (Mono does not run everywhere where C++ does). If you need to make C# work in all scenarios C++ is used, then a compiler with static linkage is also required for scenarios where deploying CLR is not possible. A compiler like Bartok. Specially if you would like to replace C++ everywhere where it is being used. So I've learned to make use of "Worse is better" philosophy and keep using C++ for my native code needs.
- ebassi 14y agoa three lines program generates 95 lines of error messages; let's throw a template into it, so that it goes up to 112 lines, but look: at the beginning you'll see the error we added! coupled with the: "To be fair, this doesn't entirely replace decltype. auto doesn't perfect forward. But it seems to work as expected, most of the time" it goes a great way to instil me a sense of safety. not. that post should be taken as an example of why C++ has become a liability, and the day won't come too soon when this joke on the whole industry finally gets dumped like COBOL in the nearest ditch, along with the corpses of all the projects that made the mistake of actually using it. if it were a living thing, I'd shoot C++ in the face to put it out of its misery.
- stingraycharles 14y agoThe issue you describe is more a compiler-specific issue than a language specific issue. Yes, the language allows a lot of flexibility and therefor in some situations it's hard to nail down an error to a nice, specific error message (mostly when templates are involved), but it's not impossible, as clang++ shows. Believe it or not, there are people (like me) who actually enjoy coding in C++.
- fafner 14y agoIt's a language specific issue. Sure clang++ has improved error reporting and GCC is actually quickly catching up. But the problem is a language issue because an error in a template confronts you with implementation details of the template. There is nothing the compiler can do about it.
- gurkendoktor 14y ago> a three lines program generates 95 lines of error messages; let's throw a template into it, so that it goes up to 112 lines, but look: at the beginning you'll see the error we added! 95 lines of error messages sounds terrible, no doubt. But which language is better in the real world? I am currently consuming a JSON web service written in Java, and I get no less than 30kb of stack trace back when something blows up. Rails' stack traces are filtered by default, but sometimes you still have to jump in there. And C++ has the advantage that much of this can happen at compile-time. I agree that almost everything about C++ is broken, but the verbosity of error messages is the smallest of it IMHO.
- rbanffy 14y agoI'm curious: how popular is it to use syntax that's not available in other compilers and how often do programmers regret the decision?
- stingraycharles 14y agoIt depends on your environment. If you completely control all the environments your application is deployed in (for example, when you provide a SaaS), it's fairly common.
- mdonohue 14y agoCoverity, maker of c++ static analysis software, and where I used to work, has published a paper about their experience trying to parse customer code. It turns out that 'The language people code in? The strings their compiler accepts' So yes, it is quite common to use syntax not available in other compilers. Most code is vetted against only one compiler to begin with. http://www.stanford.edu/~engler/BLOC-coverity.pdf http://www.stanford.edu/~engler/BLOC-coverity.pdf
- fafner 14y agoDo you use EDG or another frontend? I can only assume that parsing C++ is quite problematic especially with all those compiler extensions and the current transition to C++11.
- splinterofchaos 14y agoThis particular feature isn't offered by anyone else, so I would not write a program with it and force anyone else who wanted to compile the code to use an unsupported, bleeding edge version of GCC. But I /will/ create a branch of a project or two, using this auto deduction, and send bug reports back if necessary. I, and many others, have been writing code in Clang and GCC for years that could not be compiled in MSVC. But that code was standard c++11. This is experimental and people should be aware of that while using it.
- dagw 14y agoI wonder how many times programmers are even aware that they're using syntax not available in other compilers. I remember the first time I used a non-gcc C compiler and was greatly surprised that things I'd taken for granted and simply assumed was 'C' didn't work.
- nicholassmith 14y agoYou know when you get in a really fancy sports car and sit down and look at the console and go "What the fuck?" as your brain tries to parse the myriad of options relating to everything that are usually highly non-intuitive and often buried under many layers of cruft and you need to sit and read the manual that's as thick as a phone book? That's kind of what C++ is getting towards. There's a simple solution, don't touch all the fancy and extreme language features, use the core, keep your sanity. I code in C++ professionally using Qt, the last time I wrote any code using anything overly fancy was probably when I was in University. It's often not needed, it's guaranteed to make your code base a nightmare, and it's usually horrid to read back over. If you're sensible and put some constraints on what you're doing C++ is a great language choice, but often people stray into using all these areas of C++ that basically make the code an unmaintainable mess. (note, defining core as the things guaranteed to work on 95%+ of current compilers, if it's non-standard I would really, really thing twice about using it)
- coliveira 14y agoWhat many people don't understand is that C++ has at least two target audiences: (1) people writing low level libraries using templates and other esoteric stuff; and (2) people writing application code. (1) is needed because C++ is a language that can target multiple environments and operating systems. The template craziness is necessary to make the system fast and easy to use for application developers. If you are writing applications, however, you should try to use only bread and butter features, along with standard libraries such as STL and semi-standard stuff like Qt. Once you understand this, your life will be much easier with C++.