Category Archive for Software Development
Visual Studio 2013 has only been released very recently, and the Visual C++ team already has a new CTP out with new features
The following table gives an overview and even includes features that are planned for future releases.
- Implicit move special member function generation (thus also completing =default)
- Reference qualifiers on member functions (a.k.a. “& and && for *this”)
- Thread-safe function local static initialization (a.k.a. “magic statics”)
- Inheriting constructors
- Extended sizeof
- constexpr (except for constructors)
- noexcept (unconditional)
- C++14 decltype(auto)
- C++14 auto function return type deduction
- C++14 generic lambdas (with explicit lambda capture list)
- (Proposed for C++17) Resumable functions and await
Remember, this is a CTP so it does not come with a Go Live license.
More details can be found on the VCBlog.
The final versions of Visual Studio 2013, Team Foundation Server 2013 and .NET 4.51 are now available from MSDN. You can also download trials.
VS 2013 can be installed side by side with previous versions of Visual Studio or, if you have a VS 2013 pre-release, it can be installed straight on top of the pre-release. TFS 2013 cannot be installed side by side but can also be installed on top of either a previous version (TFS 2012 or TFS 2010) or a pre-release.
Learn more about what’s new in Visual Studio 2013.
What’s new in Visual C++ 2013 (excerpt from MSDN):
- Added support for the following ISO C++11 language features:
- Default template arguments for function templates.
- Delegating constructors.
- Explicit conversion operators.
- Initializer lists and uniform initialization.
- Raw string literals.
- Variadic templates.
- Alias templates.
- Deleted functions.
- Non-static data member initializers (NSDMIs).
- Defaulted functions. (using =default to request memberwise move constructors and move assignment operators is not supported)
- Added support for the following ISO C99 language features:
- Compound literals.
- Designated initializers.
- Mixing declarations with code.
- String literal conversion to modifiable values can be disallowed by using the new compiler option /Zc:strictStrings. In C++98, conversion from string literals to char * (and wide string literals to wchar_t *) was deprecated. In C++11, the conversion was removed entirely. Although the compiler could strictly conform to the standard, instead it provides the /Zc:strictStrings option so that you can control conversion. By default, the option is off. Note that when you are using this option in debug mode, the STL will not compile.
- rvalue/lvalue Reference Casts. With rvalue references, C++11 can clearly distinguish between lvalues and rvalues. Previously, the Visual C++ compiler did not provide this in specific casting scenarios. A new compiler option, /Zc:rvalueCast, has been added to make the compiler conformant with the C++ Language Working Paper(see section 5.4, [expr.cast]/1). The default behavior when this option is not specified is the same as in Visual Studio 2012.
- Support for the C++11 explicit conversion operators, initializer lists, scoped enums, and variadic templates.
- All containers now support the C++11 fine-grained element requirements.
- Support for these C++14 features:
- “Transparent operator functors” less<>, greater<>, plus<>, multiplies<>, and so on.
- make_unique<T>(args…) and make_unique<T>(n)
- cbegin()/cend(), rbegin()/rend(), and crbegin()/crend() non-member functions.
- <atomic> received numerous performance enhancements.
- <type_traits> received major stabilization and code fixes.
This list is just a small part of everything that’s new. There are also
- Visual C++ library enhancements
- C++ application performance enhancements
- Diagnostics enhancements
- 3D graphics enhancements
- Quite a few very nice IDE and Productivity enhancements.
Read all the details here.
Visual C++ 2013 now also supports “just my code” debugging which makes working with C++ even better. The ability to filter the call stack down to just the code you wrote when debugging has long existed for managed languages and is now available for C++
My article “Advanced C++ Tips and Tools” is live on the tech.book(store) website of Amazon.
C++ allows you to write clean, safe and fast code, and writing it is even easier than ever thanks to new features in C++11. This article highlights a couple of tips…
You can read the full article here.
Microsoft has released Update 2 for Visual Studio 2012 (VS2012.2). You can get it here.
Just as with VS2012.1 (which is installed as part of VS2012.2 for those of you who don’t already have VS2012.1 installed), this release contains important fixes as well as a wealth of new functionality, addressing feedback we’ve received from the community and aligning with key software development trends in the market. The new functionality primarily spans (though is not limited to) five areas of investment: agile planning, quality enablement, Windows Store development, line-of-business development, and the general developer experience.
Check out Somasegar’s blog post for more details on this update.
The first update for Visual Studio 2012 has been released.
This update delivers bug fixes, but also new functionality. The new functionality in this first update primarily spans four areas: Windows development, SharePoint development, agile teams, and continuous quality.
We can now target Windows XP again with C++ code, and there have been a couple of C++ unit testing enhancements. For Windows Store applications, the update includes support for both mixed-mode managed/native debugging and for native ARM dump debugging.
Get more details about the update.
Download the update.
As promised, Microsoft is releasing out-of-band updates for Visual C++. A preview of the first such update has now been released as the November 2012 Compiler CTP. This is a Customer Technology Preview and does not come with a ‘Go Live’ license, but it allows you to start experimenting and testing new features, and to provide feedback.
This November 2012 CTP contains a lot of new C++11 features:
- Variadic templates
- Uniform initialization and initializer_lists
- Delegating constructors
- Raw string literals
- Explicit conversion operators
- Default template arguments for function templates
More details, including installation instructions and how to give feedback can be found here.
Download the November 2012 CTP and start playing with these new C++11 features.
C++11 makes it easier to write a thread-safe singleton. Here is an example. The class definition of the singleton looks as follows:
static CSingleton& GetInstance();
static std::unique_ptr<CSingleton> m_instance;
static std::once_flag m_onceFlag;
CSingleton(const CSingleton& src);
CSingleton& operator=(const CSingleton& rhs);
The implementation of the GetInstance() method is very easy using C++11 std::call_once() and a lambda:
Kate Gregory (a fellow VC++ MVP) has published her book called “C++ AMP: Accelerated Massive Parallelism with Microsoft Visual C++”.
The official description is as follows.
Capitalize on the faster GPU processors in today’s computers with the C++ AMP code library—and bring massive parallelism to your project. With this practical book, experienced C++ developers will learn parallel programming fundamentals with C++ AMP through detailed examples, code snippets, and case studies. Learn the advantages of parallelism and get best practices for harnessing this technology in your applications.
Discover how to:
- Gain greater code performance using graphics processing units (GPUs)
- Choose accelerators that enable you to write code for GPUs
- Apply thread tiles, tile barriers, and tile static memory
- Debug C++ AMP code with Microsoft Visual Studio®
- Use profiling tools to track the performance of your code
Find out more about this book here.
The next meeting of the Belgian C++ Users Group is planned for Tuesday October 16th 2012 at 18:30 in the Microsoft offices in Zaventem.
The agenda is as follows:
- Session 1: An introduction to the C++ Network Library (Glyn Matthews)
- Session 2: Comparison between Unit Test Frameworks (Mark Van Peteghem)
Microsoft is sponsoring this event by providing the location, drinks and sandwiches.
The event is free for everyone, but you need to register for it.
Microsoft has made the Release Candidate of Visual Studio 2012 available for download. The release candidate comes with a Go-Live license.
Read Jason Zander blog post for details of this release.
Get it here.
The third meeting of the Belgian C++ Users Group is planned for Wednesday June 27th 2012 at 18:30 in the Microsoft offices in Zaventem.
There will be two presentations, and we are proud to announce that they will be given by 2 international top speakers:
- Kate Gregory is the author of over a dozen books, and speaks at DevTeach, TechEd (USA, Europe, Africa), and TechDays, C++ Connections (with fellow speakers Herb Sutter and Bjarne Stroustrup), among others. Her speaker ratings are consistently in the top 10%. Kate is a C++ MVP, a founding sponsor of the Toronto .NET Users Group, the founder of the East of Toronto .NET Users group, a member of the INETA speakers bureau, and a member of adjunct faculty at Trent University in Peterborough. Since January 2002 she has been Microsoft Regional Director for Toronto and since January 2004 she has been awarded the Microsoft Most Valuable Professional designation for Visual C++. In June 2005 she won the Regional Director of the year award and in February 2011 she was designated Visual C++ MVP of the year for 2010. Kate develops courses on C++, Visual Studio, and Windows programming for Pluralsight and is writing a book on C++ AMP.
- Rong Lu is a Program Manager in the Visual C++ team at Microsoft. She holds both Bachelor’s and Master’s degrees in Computer Science from Shanghai Jiaotong University. She is now working on Visual Studio vNext Application Lifecycle Management Tools for C++. Before that, she worked on the Visual Studio 2005 SDK, Visual Studio 2008 and 2010 releases, mainly responsible for designing architecture tools and SharePoint development tools. She has been a speaker at TechEd since 2007
Both are experienced speakers, and it’s a perfect opportunity for networking. If you ever wanted to ask a question to a member of the Visual C++ product team, now is your chance.
The agenda will be as follows:
- Session 1 (18:30 – 19:30): What’s new in VC++11 (Rong Lu)
- Session 2 (19:45 – 20:45): C++ AMP (GPGPU Computing) (Kate Gregory)
It is time to start taking advantage of the computing power of GPUs. C++ AMP can deliver orders of magnitude performance increase with certain algorithms by utilizing the GPU to perform mathematical calculations.
Microsoft is sponsoring this event by providing the location, drinks and sandwiches.
The event is free for everyone, but registration is required. Register now.
A limited number of seats are available.
( PS: If you know anyone interested in C++, please forward this invitation to them. )
Most op you will know by now that the Visual Studio 11 Beta UI is rather gray. There was a lot of feedback about this from the communities, and it seems Microsoft is listening. They have announced a couple of UI changes to bring back some color to the UI.
Check out this blog post for a description of the changes, including before and after screenshots. I definitely like the new upcoming changes
Microsoft has announced that it will release Visual Studio 11 Beta on 29th of February, and that it will be “go live,” meaning you will be allowed to start using it in production environments. Read the official announcement.
The user interface of the new Visual Studio 11 is completely overhauled. It now follows the Metro principles of clean UI that uses typography and white space for layouting instead of lines. Below are two screenshots of the UI in the beta version.
As you can see, it’s completely different compared to Visual Studio 2010. Themes are supported, so you’ll be able to design whatever theme you want. An in-depth discussion of these changes can be found on the Visual Studio Team Blog.
The product pages have also been updated with information about the upcoming releases. One new version of the product is called “Team Foundation Server Express Beta”, which is a free collaboration software targeted at small teams. Read more about it here.
Daniel Moth from the C++ AMP development team has posted an interesting blog post about double precision floating point arithmetic support in C++ AMP and its limitations on current hardware.
Read it here.
As promised, Microsoft has released an open specification of C++ AMP: Accelerated Massive Parallelism
This allows other compiler vendors to implement support for C++ AMP on any platform.
Read the official announcement.
Download the specification.
It is time to start taking advantage of the computing power of GPUs…
A while ago I wrote an article about how to use the Microsoft Parallel Patterns Library (PPL) to render the Mandelbrot fractal using multiple CPU cores. That article can be found here.
This new article will make the Mandelbrot renderer multiple times faster by using a new Microsoft technology called C++ AMP: Accelerated Massive Parallelism, introduced in the Visual C++ 11 Preview.
Read the rest of this entry »
The following code will toggle the visibility of the desktop icons, and will update the checkmark in the menu when you right click the desktop.
HWND hProgman = FindWindow(_T("Progman"), 0);
return FindWindowEx(hProgman, 0, _T("SHELLDLL_DefView"), 0);
HWND hWndDesktop = GetDesktopHWND();
SendMessage(hWndDesktop, WM_COMMAND, 0x7402, 0);
I’m going to try to get a C++ User Group going in Belgium, and got support from the Microsoft Developer Network (MSDN) Belux Team
Here is the official call for action:
Are you passionate about C++ and interested in finding like-minded people? Feel like coming together, setting an informal User Group in 2012? We’d like to support you in that and have a call to action for you.
Marc Gregoire, C++ MVP and author of the book Professional C++, 2nd Edition is one of the folks passionate about the technology and interested in starting up a more active C++ community in Belgium. Are you interested? Join Marc and the MSDN Belux Team for an informal discussion at the Microsoft office in Zaventem on Tuesday January 10th 2012 at 6:30 PM.
Contact Marc through email, leave a note on the MSDN Belux Team blog or reach out to Katrien De Graeve from MSDN Belux via her Twitter and we’ll see you in January.
If you are looking for some of the other Microsoft technology communities there is the full listing here: http://msdn.microsoft.com/nl-be/cc196311.
The Windows Imaging Component (WIC) is a flexible and robust API for working with images on Windows. The API is extensible. Third-party vendors can create new image codecs (readers and writers) to make new image formats available to all applications that use the WIC API. Here is a brief description from the MSDN:
The Windows Imaging Component (WIC) provides an extensible framework for working with images and image metadata. WIC makes it possible for independent software vendors (ISVs) and independent hardware vendors (IHVs) to develop their own image codecs and get the same platform support as standard image formats (for example, TIFF, JPEG, PNG, GIF, BMP, and HDPhoto). A single, consistent set of interfaces is used for all image processing, regardless of image format, so any application using the WIC gets automatic support for new image formats as soon as the codec is installed. The extensible metadata framework makes it possible for applications to read and write their own proprietary metadata directly to image files, so the metadata never gets lost or separated from the image.
The MSDN states the primary features of WIC as follows:
- Enables application developers to perform image processing operations on any image format through a single, consistent set of common interfaces, without requiring prior knowledge of specific image formats.
- Provides an extensible “plug and play” architecture for image codecs, pixel formats, and metadata, with automatic run-time discovery of new formats.
- Supports reading and writing of arbitrary metadata in image files, with the ability to preserve unrecognized metadata during editing.
- Preserves high bit depth image data, up to 32 bits per channel, throughout the image processing pipeline.
- Provides built-in support for most popular image formats, pixel formats, and metadata schemas.
WIC comes with the following standard built-in codecs:
- BMP (Windows Bitmap Format), BMP Specification v5.
- GIF (Graphics Interchange Format 89a), GIF Specification 89a/89m
- ICO (Icon Format)
- JPEG (Joint Photographic Experts Group), JFIF Specification 1.02
- PNG (Portable Network Graphics), PNG Specification 1.2
- TIFF (Tagged Image File Format), TIFF Specification 6.0
- Windows Media Photo, HD Photo Specification 1.0
All codecs can both load and save the specific image format, except the ICO codec which can only load icon files and not save them.
Reading all this, it looks like WIC is pretty powerful, and the best part is that it’s easy to use as I will demonstrate in this article. Read the rest of this entry »
The ISO International Organization for Standardization has now officialy published the C++11 standard
Here is part of the press release:
C++, one of the most popular programming languages used in everything from Web browsers to 3D video games, has been fully updated and published as, ISO/IEC 14882:2011, Information technology – Programming languages – C++.
ISO/IEC 14882:2011 defines the programming language and specifies requirements for implementation. Also known as C++11, this is the first major revision of the standard since 1998. Its new features extend C++’s traditional strengths of flexibility and efficiency – for example, lambda functions, move semantics, and variadic templates further enable developers to use powerful expressiveness and strong abstraction to write efficient, high-performance code with full access to the hardware available when needed. Even more, the new C++11 has the convenience and ease of use of other modern languages – from features like auto type deduction and explicit virtual override control, to standard smart pointers that mean never writing delete again.
You can read the complete press release here.