值类型不完整的映射

2024-05-05

我收到以下错误:

class Test
{
    std::map<std::string,Test> test;
};

错误是“字段的类型‘测试’不完整”。我读了一些帖子,建议这可能是 xcode 附带的 libcxx 版本中的一个错误,但如果我只需将其更改为:

class Test
{
    std::map<std::string,std::shared_ptr<Test>> test;
};

我只是想仔细检查这绝对是一个正确的错误而不是一个错误。

Cheers!


标准要求,除非另有说明,标准库模板组件中使用的所有类型都必须完整。因此libc++的错误是正确的。使用不完整类型是未定义的行为(§17.6.4.8[res.on.functions]/2),因此 libstdc++ 接受它也没有错。

您可以使用指针对象来构造完整的类型,就像您所做的那样。但您也可以使用一些允许不完整类型的第三方集合库,例如boost::container::map http://www.boost.org/doc/libs/1_51_0/doc/html/boost/container/map.html is 旨在允许不完整的类型 http://www.boost.org/doc/libs/1_51_0/doc/html/container/containers_of_incomplete_types.html.


§17.6.4.8 其他功能/2:

特别是,在以下情况下效果未定义:

  • ...

  • 如果在实例化模板组件时使用不完整类型 (3.9) 作为模板参数,除非该组件特别允许。

(明确允许不完整类型的唯一组件是declval, unique_ptr, default_delete, shared_ptr, weak_ptr and enable_shared_from_this.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

值类型不完整的映射 的相关文章

随机推荐

  • 与主机中的容器共享目录或卷

    我有一个目录 可能是后面的卷 我想与所有交互式容器共享 我知道 本机 Docker 卷存储在 var lib docker volumes and docker run v似乎是最简单的方法 但我认为Data Volume Containe
  • .NET csc 和 Mono mcs 的兼容性

    我知道 NET 和 Mono 是二进制兼容的 但给定一组源代码 csc 和 mcs 会生成完全相同的 100 相同的二进制 CLI 可执行文件吗 人们能够判断可执行文件是用 csc 还是 mcs 编译的吗 很多东西在规范中没有完全定义 或者
  • Python for 循环中的多个循环控制变量

    我遇到了一种情况 我需要实现具有多个循环控制变量的 for 循环 基本上这就是我想做的 Java for int i 0 j n i
  • iOS WKWebView不支持本地存储

    我正在构建一个简单的 WKWebView 应用程序 该应用程序加载用 Construct HTML5 编写的游戏 游戏存储在服务器上 当我在常规浏览器 移动和桌面 中玩游戏时 游戏本身会存储在本地 并且高分也会存储在本地 重新启动游戏后不需
  • 如何在 C++ 中对字符串使用 qsort

    我想使用 qsort 函数使用 C 对字符串中的字符进行排序 include
  • 在 tweetinvi 中查找推文的 tweetID

    我对 C 编程相对较新 为学校项目自学 并决定尝试使用 TweetInvi 来实现 Twitter 功能 到目前为止 一切进展顺利 身份验证和发布已启动并运行 但我正在努力找出如何使用 DestroyTweet 方法 它和许多其他方法都需要
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • 把自己限制在HTTP1.0有什么用吗?

    我负责构建一些工具来帮助最终用户测试为什么他们的浏览器可能无法与网站配合使用 我被告知它可能不起作用的原因之一是 需要 HTTP1 1 这一行 我浏览了大多数浏览器选项 只浏览了 IE 版本 6 及更高版本 even 9 允许您禁用 HTT
  • 将 pdfmake.js 文件导入到我的 ts 文件中

    我正在开发 vsts 网络扩展 我想要一个使用PDFmake js文件来生成一个pdf PDFmake js文件是imported to node nodules文件夹通过安装为npm install pdfmake 我想要import t
  • CocoaPods 库中的强dispatch_queue_t

    在可能使用 iOS 5 x OS X 10 7 部署目标或较新的部署目标构建的库中 我在正确定义dispatch queue t财产 大多数情况下我可以按照建议解决它here https stackoverflow com a 248460
  • 使用 C# 作为我的 DSL——这可能吗?如果可以,如何实现?

    是否可以使用 C 作为 DSL其中 C 源代码由最终用户在 TextBox 中编辑 在应用程序运行时编译 然后由已运行的应用程序调用 我问这个问题是因为在接下来的几个月里 我将需要实现一个简单的数学运算 DSL 类似于 Rachel Lim
  • 在 macOS 上运行 Comma IDE 时找不到匹配的虚拟机

    我安装了 Comma IDEthis https commaide com download链接 但当我尝试通过双击应用程序文件夹中 Finder 中的应用程序图标来运行它时 出现错误 未找到匹配的 VM 需要 Java 1 8 或更高版本
  • jQuery 无法从本地主机检索数据

    我有一个非常简单的 jQuery 来检索我最新的推文 getJSON http twitter com statuses user timeline username json count 1 function data tweet tex
  • 更改在 docker 中运行的 selenium 节点的日志级别

    我们的团队正在使用 docker 部署 selenium 网格 默认日志级别似乎设置为 INFO 我想将其设置为更高的值 严重 或完全关闭它们 我已经进行了三次尝试 但到目前为止 没有效果 方法一 从 selenium 客户端 我尝试在 D
  • Foldmethod=同时标记和语法?

    同一文件是否可以根据标记和语法使用折叠 Since foldmethod一次只能设置为一个 我认为您真正可以做到这一点的唯一方法是使用 set foldmethod expr并与foldexpr 即使如此 我也不确定它是否能够完全按照您的要
  • 如何将 SQL 参数中的字符串数组传递给 SQL 中的 IN 子句

    我正在以复杂的方式做一个逻辑 我只需要在存储过程中执行此查询 select Sizes SUM Quantity from tbl SizeBreakup where Brand brand and Combo in 1 2 我必须在 C
  • for 循环语法,其中包含 if 语句

    使用 if 语句编写 for 循环的普遍共识是什么 for int i 0 i lt hi i if some invalid condition continue if another invalid condition continue
  • 我无法在 PyCharm 下运行 Django Python pytest

    pytest portal test session starts platform darwin Python 3 6 0 pytest 3 0 6 py 1 4 32 pluggy 0 4 0 Django settings confi
  • 如果服务器在使用 dblink 时未请求密码,则非超级用户无法连接

    我想在我的应用程序中进行一些跨数据库引用 简而言之 我有两个数据库 分别称为meta 和op 我想从元到 op 数据库中的表进行一些选择查询 如下所示 但出现以下错误 我尝试了有密码和无密码 顺便一提caixa用户是非超级用户 我的目标服务
  • 值类型不完整的映射

    我收到以下错误 class Test std map