Looks like VS2015 will finally have almost complete support for C++11 and the majority of C++14
-
http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx[^] I'm not quoting anything since all the interesting stuff is in a pair of tables; but the only incomplete C++11 items are expression SFINAE (no), constexpr (partial), and C99 preprocessor (partial). C++11 constexpr is footnoted as will probably be working before RTM, the preprocessor is unchanged from VS2013. Even after reading the standard proposal[^] and wiki article[^] I'm not sure WTE SFINAE is supposed to be about beyond that it involves the cluster elephant of C++ templates. Hidden in the faq is a comment that at the compiler level they're planning to release it as an VC2015 update instead of holding it for the next major release; but to avoid compatibility problems the STL won't be updated until later. C++14 support went from 1/11(12 if you count an optional item) to 8/11 bullet points; and C++17 went from 1/10 to 4/10. The C++14/17 standard library is complete except for 7 items waiting on constexpr to be fully debugged and one that's related to SFINAE. Most of the updates are in the just released RC build; but a few were implemented between when that codebase was locked down and now, and won't be available publicly until RTM. If anything in my attempt to summarize that's wrong I plead knowing just enough C++ to be dangerous. :sigh:
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx[^] I'm not quoting anything since all the interesting stuff is in a pair of tables; but the only incomplete C++11 items are expression SFINAE (no), constexpr (partial), and C99 preprocessor (partial). C++11 constexpr is footnoted as will probably be working before RTM, the preprocessor is unchanged from VS2013. Even after reading the standard proposal[^] and wiki article[^] I'm not sure WTE SFINAE is supposed to be about beyond that it involves the cluster elephant of C++ templates. Hidden in the faq is a comment that at the compiler level they're planning to release it as an VC2015 update instead of holding it for the next major release; but to avoid compatibility problems the STL won't be updated until later. C++14 support went from 1/11(12 if you count an optional item) to 8/11 bullet points; and C++17 went from 1/10 to 4/10. The C++14/17 standard library is complete except for 7 items waiting on constexpr to be fully debugged and one that's related to SFINAE. Most of the updates are in the just released RC build; but a few were implemented between when that codebase was locked down and now, and won't be available publicly until RTM. If anything in my attempt to summarize that's wrong I plead knowing just enough C++ to be dangerous. :sigh:
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
SFINAE[^] itself is a concept that has been an important part of C++ since the use of templates was seriously explored. It basically allows the compiler to consider any potential type for the creation of a template. If an error were to occur because of one of the potential substitutions, it will simply remove that from the list of candidates. As long as there is a valid candidate to instantiate the template no error will be emitted. The "expression SFINAE" in the C++11 standard expands the compiler support to evaluate and consider certain expressions that are known at compile-time, and therefore should be able to be resolved by SFINAE. IMO, this is a corner-case that will be nice when it's support appears, but it is by no means something that will be sorely missed by many.
constexpr
on the other hand is one that I have been waiting for from VS for years.Dan Neely wrote:
If anything in my attempt to summarize that's wrong I plead knowing just enough C++ to be dangerous. :sigh:
Everything you said was accurate. I assert that C, C#, JAVA, JavaScript and even C++ programmers know enough to be dangerous in C++. I think the devs that are dangerous, are the ones that believe they have learned it all... I'm pretty sure that's not you :cool:
-
SFINAE[^] itself is a concept that has been an important part of C++ since the use of templates was seriously explored. It basically allows the compiler to consider any potential type for the creation of a template. If an error were to occur because of one of the potential substitutions, it will simply remove that from the list of candidates. As long as there is a valid candidate to instantiate the template no error will be emitted. The "expression SFINAE" in the C++11 standard expands the compiler support to evaluate and consider certain expressions that are known at compile-time, and therefore should be able to be resolved by SFINAE. IMO, this is a corner-case that will be nice when it's support appears, but it is by no means something that will be sorely missed by many.
constexpr
on the other hand is one that I have been waiting for from VS for years.Dan Neely wrote:
If anything in my attempt to summarize that's wrong I plead knowing just enough C++ to be dangerous. :sigh:
Everything you said was accurate. I assert that C, C#, JAVA, JavaScript and even C++ programmers know enough to be dangerous in C++. I think the devs that are dangerous, are the ones that believe they have learned it all... I'm pretty sure that's not you :cool:
I'll take a look at your article later; but thanks for the plain English short version. Unless I start doing crazy stuff with templates, that's probably all I really need to know.
Paul M Watt wrote:
I assert that C, C#, JAVA, JavaScript and even C++ programmers know enough to be dangerous in C++. I think the devs that are dangerous, are the ones that believe they have learned it all... I'm pretty sure that's not you :cool:
I've got mixed feelings about the syntax similarities in that family too. Yeah it's nice that you can generally follow code in any of them if you know just one, and being able to jump in and bang out a few quick updates right away is convenient; but they all have enough gotchas to ambush the overconfident. And despite using it for most of the last decade I still wouldn't even claim to know all of C# Winforms programming; never mind WPF or the web bits.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
I'll take a look at your article later; but thanks for the plain English short version. Unless I start doing crazy stuff with templates, that's probably all I really need to know.
Paul M Watt wrote:
I assert that C, C#, JAVA, JavaScript and even C++ programmers know enough to be dangerous in C++. I think the devs that are dangerous, are the ones that believe they have learned it all... I'm pretty sure that's not you :cool:
I've got mixed feelings about the syntax similarities in that family too. Yeah it's nice that you can generally follow code in any of them if you know just one, and being able to jump in and bang out a few quick updates right away is convenient; but they all have enough gotchas to ambush the overconfident. And despite using it for most of the last decade I still wouldn't even claim to know all of C# Winforms programming; never mind WPF or the web bits.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
Dan Neely wrote:
I've got mixed feelings about the syntax similarities in that family too. Yeah it's nice that you can generally follow code in any of them if you know just one, and being able to jump in and bang out a few quick updates right away is convenient; but they all have enough gotchas to ambush the overconfident.
Yes there are both pluses and minuses in making these languages have similar syntax. It requires discipline to learn and adopt the idioms of each. Often you can look at, say, C# code and tell whether the dev came from a C++ or VB background but, ideally, you shouldn't be able to.
Kevin