0

我有一个类似的功能:

template <const char delim = ' ', typename Arg>
inline std::string jq2StlString(const Arg& arg)
{
    if constexpr (std::is_same_v<Arg, std::wstring>)
    {
        jqWideChar2StlString(arg);
    }
    else if constexpr (std::is_convertible_v<Arg, const wchar_t*>)
    {
        jqWideChar2StlString(arg);
    }
...
}

我如何匹配具有不同大小的 wchar_t 数组,例如:

wchar_t[8]
wchar_t[3]

很快 ?

4

1 回答 1

0

您可以使用std::extent来获取一维数组的大小:

template <const char delim = ' ', typename Arg>
inline std::string jq2StlString(const Arg& arg)
{
    if constexpr (std::is_same_v<Arg, std::wstring>)
    {
        jqWideChar2StlString(arg);
    }
    else if constexpr (std::is_convertible_v<Arg, const wchar_t*>)
    {
      constexpr std::size_t extend = std::extent_v<Arg>;
      if constexpr (extend == 8) {
        // match wchar_t[8]
      } else if constexpr(extend == 3) {
        // match wchar_t[3]
      }
    }
}
于 2021-10-29T09:44:43.387 回答