【问题标题】:Is codecvt not supported by Clang or GCC?Clang 或 GCC 不支持 codecvt 吗?
【发布时间】:2014-06-30 19:53:41
【问题描述】:

我什至无法从 cppreference.com 获取基本的 codecvt 示例以在 GCC 4.9 或 Clang 3.4 上编译,例如:

http://goo.gl/HZ5GLH

http://coliru.stacked-crooked.com/a/345d6d89949ac1e6

【问题讨论】:

  • 我认为目前的主干libc++ 对codecvt 的支持不错...
  • 你是在告诉你的编译器使用 C++11 吗?
  • 这不是编译器版本的问题,而是标准库的实现。 libc++ 已经支持 codecvt 很长时间了。对于 clang 切换到 libc++ 的标志是 -stdlib=libc++: rextester.com/EPRYNU17491
  • 而且网站 coliru.stacked-crooked.com 没有安装 libc++,所以你不能在那里尝试。
  • @barnes53 coliru 确实安装了 libc++ coliru.stacked-crooked.com/a/e1b8ab4ea3b8e161(OP 仍然必须修复错误的强制转换为 unsigned char,但显示了命令行)

标签: gcc c++11 unicode clang codecvt


【解决方案1】:

根据libstdc++ manual,第 22.4.1 部分,它缺少codecvt 的支持,即使在最新版本上也是如此。

还有libc++ has complete support for C++11 and C++14 features,所以你应该在CLang上使用它,指定-stdlib=libc++编译器标志(确保你已经安装了它)。

编辑:从当前版本的 libstdc++ 开始,现在支持 codecvt。

【讨论】:

  • 添加这个标志解决了许多神秘的“未定义模板 std::__1::codecvt 的隐式实例化”错误,我在一个基于 Linux(带 GCC)和 Windows(带 MSVC)的项目中遇到) 但不是在 OS X (w/ Clang) 上。
猜你喜欢
  • 2021-05-08
  • 2014-06-22
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 2015-04-03
  • 1970-01-01
相关资源
最近更新 更多