【问题标题】:Is it possible to use std::char_traits<char> in constant expressions before GCC 8?是否可以在 GCC 8 之前的常量表达式中使用 std::char_traits<char> ?
【发布时间】:2020-07-23 12:18:07
【问题描述】:

根据GCC 8 Release Note,现在可以在常量表达式中使用std::char_traits&lt;char&gt;std::char_traits&lt;wchar_t&gt;

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

我在这里理解的是,在 GCC 8 之前,您不能在常量表达式中使用 std::char_traits&lt;char&gt;

但是,以下代码可以很好地与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&lt;char&gt; in constant expressions before GCC 8? 当然。它只是一个永远不会被实例化的类。变更日志简化了一点,其实是关于std::char_traits&lt;char&gt;的成员函数。

标签: c++ gcc char-traits


【解决方案1】:

这项改进是backported from mainline。从 7.3 开始,它在 gcc 7 行中可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2014-05-16
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多