It has come to my notice that C++ Standard Library defines traits by means of variable templates, which are explicitly declared as inline:
template <class T> inline constexpr bool is_void_v = is_void<T>::value;
template <class T> inline constexpr bool is_null_pointer_v = is_null_pointer<T>::value;
template <class T> inline constexpr bool is_integral_v = is_integral<T>::value;
I thought that all variable templates are inline by default. Is there any particular reason to declare them inline in this case?