【发布时间】:2020-07-23 12:18:07
【问题描述】:
根据GCC 8 Release Note,现在可以在常量表达式中使用std::char_traits<char> 和std::char_traits<wchar_t>:
- 改进了对 C++17 的实验性支持,包括以下功能:
- std::char_traits 和 std::char_traits
可用于常量表达式。
我在这里理解的是,在 GCC 8 之前,您不能在常量表达式中使用 std::char_traits<char>。
但是,以下代码可以很好地与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 吗?还是我错过了什么?
【问题讨论】:
-
Is it possible to use std::char_traits<char> in constant expressions before GCC 8?当然。它只是一个永远不会被实例化的类。变更日志简化了一点,其实是关于std::char_traits<char>的成员函数。
标签: c++ gcc char-traits