我在写一个函数,需要返回多个变量,其中一个是位集。然后我遇到了一些奇怪的编译错误。
我尝试了不同的编译器,它们都会产生错误,尽管消息不同。
我试着googling了一下,似乎和公共和私有继承有关。但我认为它不应该以任何方式影响这段代码。
简化代码(C 17)如下所示:
#include <bitset>
auto f() { return bitset<100>(); }
int main()
{
auto [a] = f();
return 0;
}
如果我移除方括号(即移除结构化绑定并使用普通自动),它就会工作。
错误消息如下:
source.cpp:在函数int main()中:
来源cpp:9:18:错误:“标准::_Base_位集”
9 | auto [a] = f();
| ^
返回的编译器:1
所以我的问题是:这是预期的行为还是我做错了什么?欢迎提出建议。
这不是结构化绑定的目的。
你有一个比特集。
您的方法可能会触发SBs规则,该规则可以绑定到数据成员;但是,正如您所发现的,这不是有用或受支持的东西,每个实现(代码稍有不同)都会产生不同的症状。
只需以通常的方式使用这个单一返回值。
有三种类型可用于结构化绑定:
std::bitset
不是这些。它的规范没有说明它的成员是什么,也没有为元组协议提供选择加入。因此,它不适用于结构化绑定。预计auto[a]=f();
会失败。
如果有的话,为什么位集
我有一个简单的测试,我试图将一个弱ptr参数绑定到一个接受弱ptr的全局函数,并在支持指针仍然有效的情况下调用一个方法。 当我用弱指针创建lambda时,这似乎是有效的。如果我用weak_ptr直接调用全局方法,它也可以工作。但是,如果我事先将全局函数绑定到weak_ptr,它似乎不起作用。下面的淡化代码说明了这个问题。 我一定错过了一些简单的东西。有什么线索吗? 结果输出: 期望第一个weakP
我已经创建了一个绑定适配器来显示毕加索的图片,但它不工作。我有以下错误: 发现数据绑定错误。****/数据绑定错误****Msg:在Android.Widget.ImageView上找不到参数类型为java.lang.String的属性'app:loadPicture'的设置器。文件:/home/groupevsc.com/mathieu_labar/documents/projects/andr
简短版本: 我希望能够将结构转换为元组。至少是那种类型。在下面的代码中,convertToTuple函数不起作用,因为可变参数不能用于结构化绑定(据我所知)。关键是:自动 基本上,我需要的是一种将自定义结构的类型转换为元组的方法,元组包含结构中的所有类型。例如: 具体问题: 我想创建一个模板函数,它将一个类型或一个类型列表作为模板参数,并生成一个纹理列表,每个纹理包含一个项目。另一个函数可以对纹理
我的任务是对接angular应用程序,并使用Nginx提供服务。 我已将angular项目构建到dist文件夹,并希望将此文件夹移动到nginx- 这就是我Docker项目的结构 在这个目录的顶部是一系列其他服务,它们需要与angular应用程序一起运行,而angular应用程序正在按预期运行。用下面的docker编写。yml文件 当我用docker build构建并运行这个容器时,它会按预期运行
我在这里找到了最初的*C结构化绑定方案。它提出了一种轻松绑定多个返回值的方法,即: 但现在我看到每个人都指向 现在我学习了“列表是{like,this}编写的”,出现了一种新的列表语法?为什么?这里的花括号有什么问题?
我用于DTO POJO。对于桌面客户端GUI,我使用JavaFX。当然,我想有双向(不是单声道!)数据绑定。我找到了两个解决方案: 1)使用特殊的类适配器。例如,如果我们有POJO类Person,那么我们创建JavaFx(*Property)类PersonAdapter。此外,在POJO Person中,我们添加了PropertyChangesUpport。这个方法可以工作,但是每个DDPress