2

根据GCC 8 Release Note,现在可以在常量表达式中使用std::char_traits<char>and :std::char_traits<wchar_t>

  • 改进了对 C++17 的实验性支持,包括以下功能:
    • std::char_traits 和 std::char_traits<wchar_t> 可用于常量表达式。

std::char_traits<char>我在这里的理解是在 GCC 8 之前你不能在常量表达式中使用。

但是,以下代码可以很好地与GCC 7.5一起编译:

#include <string_view>

int main() {
    constexpr std::string_view sv{""};
    constexpr std::size_t size = std::char_traits<char>::length(sv.data());

    return 0;
}

那么,在 GCC 8 之前是否可以在常量表达式中使用 std::char_traits ?还是我错过了什么?

4

1 回答 1

2

这一改进是从 mainline 向后移植的。从 7.3 开始,它在 gcc 7 系列中可用。

于 2020-07-23T12:28:03.560 回答