Member-only story
Understanding C++14 Variable Templates: A Comprehensive Guide
Simplifying Type Traits with C++14 Variable Templates

Let’s start by introducing a piece of code shared by a friend. What do you think the result is?
a) Compilation error
b) Runs fine; please explain the result.
Now, let’s reveal the answer to this question.
When writing template code, we often need to define and use various type traits. These type traits are commonly used to make compile-time decisions based on types. Examples provided by the STL include std::is_const
, std::is_same
, and std::is_reference
. Using these traits, developers can make decisions during compilation based on type properties.
This article will introduce how to simplify writing type traits using C++14 variable templates, with a simple example provided.
C++11
In C++11, type traits are typically written using struct
or std::integral_constant
to encapsulate a boolean value. For example, if we want to write a type trait is_float
that checks whether a type is float
, we can implement it as follows:
template <typename T>
struct is_float {
static constexpr bool value = std::is_same<T, float>::value;
};