繁体   English   中英

命名空间'std'中没有名为'size'的成员

[英]No member named 'size' in namespace 'std'

我正在尝试将一些C ++代码从Windows移植到OS X(使用Xcode)。

以下代码:

writePosition %= std::size(bufferL);

正在生成错误:

命名空间'std'中没有名为'size'的成员

我该如何解决?

std::size() 从C ++ 17开始可用。 尝试为编译器启用-std=c++17

另外,请直接或通过#include以下任何标头间接检查源文件是否包含#include <iterator>

  • <array>
  • <deque>
  • <forward_list>
  • <list>
  • <map>
  • <regex>
  • <set>
  • <string>
  • <string_view>
  • <unordered_map>
  • <unordered_set>
  • <vector>

从cppreference获取信息,我看到std::size接受两种参数:具有名为size() (来自stl或用户定义)和固定大小数组的方法的容器。

您应该检查bufferL是否是其中之一。

如果bufferL是一个固定大小的数组,并且你没有包含任何包含stl容器的头文件,你还必须包含iterator头文件。

为了能够使用std::size您必须确保包含#include <iterator> 您需要检查的另一件事是编译器支持C ++ 17。 此功能仅适用于符合C ++ 17标准的编译器。

将IDE中的编译器设置更改为支持C ++ 17的编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM