C++17 New Rules For auto Deduction From braced-init-list

Initialization of variables in C++ can have several forms: default initialization: std::string s; value initialization: std::string s{}; direct initialization: std::string s(“demo”); copy initialization: std::string s = “demo”; list initialization: std::string s{‘d’, ‘e’, ‘m’, ‘o’}; aggregate initialization: char s[5] = {‘d’, ‘e’, ‘m’, ‘o’}; reference initialization: char& c = s[0]; C++11 introduced a generalized syntax for…

Inline out variables and ref locals and returns in C# 7

In C#, function parameters can be declared with the ref or out modifier, the former indicating that a value is already set and the function can read and write it, and the later that the value is not set and the function must do so before returning. As a side note, there is a good…

CategoriesC#

VisualC++ Is Now Available on Compiler Explorer

Matt Godbolt has announced today that the Visual C++ compiler is finally available on Compiler Explorer (https://godbolt.org/). Compiler Explorer is a website where you can write C/C++/Rust/Go/D code, compile it with various compilers and settings and see the resulted assembly code. #CompilerExplorer now has VS 2017 compilers! Huge thanks to @Microsoft and @apardoe! — Matt…

TDD with Live Unit Testing in Visual Studio 2017

Visual Studio 2017 Enterprise provides a feature called Live Unit Testing that enables developers to see live how changing C# and VB.NET code affects its corresponding unit tests. Among its features, it includes showing coverage information in the editor as you type, integration with the Test Explorer, including/excluding targeted test methods or projects for large…

Dining philosophers in C++11: Chandy-Misra algorithm

In my previous post, Dining Philosophers in C++11, I have provided an implementation for the dining philosophers problem using modern C++ features, such as threads and mutexes. However, it was noted in the comments that the implementation did not prevent the philosophers starving to death when you remove the waiting times. An algorithm that prevents…

Dining Philosophers in C++11

UPDATE: for an implementation of the Chandy/Misra solution see Dining philosophers in C++11: Chandy-Misra algorithm The problem of the dining philosophers, first proposed by Edsger Dijkstra and reformulated by Tony Hoare, is a famous problem for concurrent programming that illustrates problems with synchronizing access to data. The description of the problem, taken from Wikipedia, is…