jhunterkohler · GitHub

As can be seen in [meta.type.synop], there is constant use of inline constexpr. This is likely not limited just to this area of the text.

Example:

template<class T>
inline constexpr bool @\libglobal{is_void_v}@ = is_void<T>::value;
template<class T>
inline constexpr bool @\libglobal{is_null_pointer_v}@ = is_null_pointer<T>::value;
template<class T>
inline constexpr bool @\libglobal{is_integral_v}@ = is_integral<T>::value;

I had previously believed constexpr is implicitly inline for static data members, as specified in [dcl.constexpr]:

A function or static data member
declared with the \tcode{constexpr} or \tcode{consteval} specifier
is implicitly an inline function or variable\iref{dcl.inline}.

Is inline constexpr used for clarity of the text?

I'll assume that this is not a mistake, so please let me know the reasoning. Alternatively, if it's not useful to have inline constexpr here, I can remove it and submit a pull request.

Thanks for your time!

Read the original on github.com ↗