Dea*_*ean -2 c++ c++11 stdarray c++14
我不知道这个片段有什么问题.我收到这个错误:
错误:成员函数'swap'不可行:'this'参数的类型为'const array',但函数未标记为const
#include <algorithm>
#include <memory>
#include <iostream>
#include <array>
struct MyClass {
std::array<float, 4> arr;
float carr[4];
std::array<float, 4> getArrElement() {
std::array<float, sizeof(carr) / sizeof(float)> out;
return out;
}
void fun() {
auto vec = { getArrElement(), getArrElement(), getArrElement() };
std::reverse(vec.begin(), vec.end()); // <-- error line here
}
};
int main()
{
MyClass obj;
obj.fun();
}
Run Code Online (Sandbox Code Playgroud)
getArrElement没有返回一个const数组.auto应该推断,std::initializer_list但我也认为没有坏处.
怎么了?
一个std::initializer_list只有常量迭代器,所以你不能改变它的元素.
一个initializer_list 不是一个容器,不能被视为一个容器.它是编译器已知的特殊hack语言支持类型,用于支持特定语法.不要试图将它用作通用容器或序列类型.
你可以做:
using elem_type = decltype(getArrElement());
std::vector<elem_type> vec = { getArrElement(), getArrElement(), getArrElement() };
std::reverse(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |