A Taxonomy of Expression Value Categories in C++ ⚡️

C++ had value categories in C++0X version. The two value categories that were before C++11 are lvalues and rvalues. One of the greatest addition to C++11 was the introduction of movable types. Learning about the value categories is one of the pre-requisites to learn about move semantics. Any expression before the C++11 standard was either lvalue or rvalue. lvalue has an identity and its lifetime depends on the scope of the variable. On the other hand, rvalues don't have an identity and it does not live beyond the life of the expression.

Using Templates for Generic Programming - Part 1 (Embracing the beauty of SFINAE and enable_if) ⚡️

In this blog post, we will learn advanced template programming concepts. These concepts include how to change the implementation of classes and functions based on the type provided, how to work with different arguments and how to properly forward them, how to optimize the code in both runtime and compile-time, about SFINAE, std::enable_if, std::enable_if_t.

An Introduction to Function Templates in C++ ⚡️

Overloaded functions have the exact same code but the type is different. It seems an unnecessary overhead to write the same code again and again and in a long time it adds up to the maintenance cost of the project. To write code once and use it multiple times we use function templates. A function template is itself is not a definition of a function; it is a blueprint for defining a family of functions. The standard library makes heavy use of function templates and makes sure it works optimally with all data types including the custom types we define in the program. This blog post covers the basics of function templates that work with all the data types you desire.

Volatile Keyword in C & C++ ⚡️

Quoting from the C++ Standard ($ [..] volatile is a hint to the implementation to avoid aggressive optimization involving the object because the value of the object might be changed by means undetectable by an implementation.[…]

C++ Best Practice #1: Don't simply use: using namespace std; ⚡️

Never try to import the whole std namespace into your program. Namespaces are developed to avoid naming conflicts. But, when we import the whole namespace there is a possibility that this could lead to name conflicts. You can do more harm than more good.

✂️ Copy and 📋 Paste Emoji ⚡️

Emojis are supported on iOS, Android, macOS, Windows, Linux and ChromeOS. Copy and paste emojis for Twitter, Facebook, Slack, Instagram, Snapchat, Slack, GitHub, Instagram, WhatsApp and more. Use Emoji Classic on older systems.