小编Fal*_*tar的帖子

C ++结构化绑定不适用于位集

我正在编写一个需要返回多个变量的函数,其中一个是位集。然后我遇到了一些奇怪的编译错误。

我尝试了不同的编译器,尽管它们带有不同的消息,但它们都会产生错误。

我尝试使用谷歌搜索,这似乎与公共和私有继承有关。但是我认为它不会以任何方式影响这段代码。

简化的代码(C ++ 17)如下所示:

#include <bitset>
auto f() { return bitset<100>(); }

int main()
{
    auto [a] = f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我删除方括号(即删除结构化绑定并使用普通自动),则它可以工作。

错误信息如下:

source.cpp:在函数'int main()'中:

source.cpp:9:18:错误:'std :: _ Base_bitset <2>'是'std :: bitset <100>'的不可访问基础

9 |     auto [a] = f();

  |                  ^
Run Code Online (Sandbox Code Playgroud)

编译器返回:1

所以我的问题是:这是预期的行为还是我做错了什么?欢迎提出建议。

c++ c++17

2
推荐指数
2
解决办法
91
查看次数

标签 统计

c++ ×1

c++17 ×1