【发布时间】:2020-11-07 23:52:45
【问题描述】:
我不明白为什么下面的代码允许使用非 const 版本的 foo。我想禁止 const Array 变量提供非 const ArrayView。
#include <iostream>
struct ArrayView
{
ArrayView() = default;
ArrayView(const ArrayView&) = delete;
ArrayView(ArrayView&&) = delete;
void foo() {std::cout << "non const" << std::endl;}
void foo() const {std::cout << "const" << std::endl;}
};
struct Array
{
const ArrayView createView() const
{
return {};
}
};
int main()
{
const Array arr{};
auto view = arr.createView();
view.foo();
return 0;
}
输出:
non const
我在 Windows 10 上安装了 gcc 10.1.0。
【问题讨论】:
标签: c++ c++11 constants return-value auto