3042. is_literal_type_v should be inline

Section: D.14 [depr.meta.types] Status: C++20 Submitter: Tim Song Opened: 2017-12-06 Last modified: 2021-02-25

Priority: 0

View all other issues in [depr.meta.types].

View all issues with C++20 status.

Discussion:

P0607R0 forgot to look at D.14 [depr.meta.types] and make is_literal_type_v inline.

[ 2018-01-08 Moved to Tentatively Ready after 8 positive votes on c++std-lib. ]

[2018-3-17 Adopted in Jacksonville]

Proposed resolution:

This wording is relative to N4713.

  1. Change D.14 [depr.meta.types]p1 as indicated:

    -1- The header <type_traits> has the following addition:

    namespace std {
      template<class T> struct is_literal_type;
      template<class T> inline constexpr bool is_literal_type_v = is_literal_type<T>::value;
    
      template<class> struct result_of;    // not defined
      template<class Fn, class... ArgTypes> struct result_of<Fn(ArgTypes...)>;
      template<class T> using result_of_t = typename result_of<T>::type;
    
      template<class T> struct is_pod;
      template<class T> inline constexpr bool is_pod_v = is_pod<T>::value;
    }