如何 static_assert 该类型对于 c++20 中的模板非类型参数是可行的

2023-11-30

我有一个类型TimeDuration。现在是文字类型我可以将它用作非类型模板参数。这种用法与类型定义相距甚远(编译方面),因此如果有人修改TimeDuration这样它就不再是字面意思了,很久以后才会注意到。

所以我把static_assert(std::is_literal_type_v<TimeDuration>);就在类定义之后。然而,is_literal_type在c++20中被删除。我可以用什么来代替这个?

我知道关于C++17 中已弃用 std::is_literal_type,但答案基本上说我的问题不存在。


有一种非常简单的方法可以获取有关类型是否适合在非类型模板参数中使用的编译错误:在 NTTP 中使用它。如果不合适,编译器会抱怨。

您可以轻松地在某处编写一个小模板,并使用您的类型显式实例化它。就像是:

template<auto val> struct checker{};

template struct checker<MyType(/*insert params for constexpr function here*/)>;

is_literal_type无论如何都是不合适的(这就是它消失的原因),因为作为文字类型并不像 C++20 的用户定义的 NTTP 规则那么严格。是的,用户定义的 NTTP 必须是文字类型,但它还必须具有许多其他品质。

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

如何 static_assert 该类型对于 c++20 中的模板非类型参数是可行的 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • std::bind 重载解析

    下面的代码工作正常 include
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • Visual Studio 2015 RC3 TypeScript Intellisense 不再工作

    我正在使用 TypeScript 1 8 10 和 TypeScript Tools for VS2015 1 8 1 0 Beta 另外 我正在使用 VS2015 RC3 我尝试升级到 TypeScript 2 0 但遇到了完全相同的问题
  • 使用私有 API 扫描 iOS 7 上的网络 (SSID)

    是否可以通过在 iOS 7 越狱设备上使用私有 API 来获取周围网络的 SSID 列表 我知道关于MobileWiFi framework管理 iOS 上的 WiFi 功能 它取代了过时的 Apple80211 框架 这是 4 年前的答案
  • Magento SOAP 2 API 致命错误:过程“登录”不存在

    我收到 致命错误 程序 登录 不存在于 chroot home mystore mystore com html lib Zend Soap Server php 第 832 行 这就是错误的来源 soap this gt getSoap
  • Python:如何从 pandas 列中删除所有非数字值?

    我有一个数据框df像下面这样 Rooms BFS 0 3 5 4201 1 1 5 4201 2 NA 4201 3 NA 4201 4 5 5 4201 5 5 4201 6 4 5 4201 7 3 4201 8 4201 9 3 42
  • 在 R 正则表达式中获取文本段落中超过 1 个引用

    首先 找到引用 我想要这里的所有内容 内的文本 第二 在引文前摘录1句话 如果可能的话 我想通过查看 R 中的正则表达式来实现所需的输出 Example Yoyo He is sad Oh no Don t sad Yeah Testing
  • 如何使用ThreadException?

    我尝试使用 http msdn microsoft com en us library system windows forms application threadexception aspx Y399 但当我这样做时 throw new
  • Gradle 无法检测 osDetector 插件

    我正在将 OpenSSL 用于我的 Java GRPC 项目 该项目使用 gradle 我读了文档其中提到我们应该按照本节中提到的进行安全设置link 我已将 osDetector 插件包含在 build gradle 文件中 但是当我构建
  • 单击 Viewpager Xamarin Android

    我是 Xamarin Android 开发新手 我使用以下命令创建了图像滑块浏览器 现在我想单击该 ViewPager 的图像 我该如何实现呢 我已经尝试过这个但没有成功 viewpage mview FindViewById
  • 目标无法访问,标识符解析为 null

    我正在尝试在外部服务器上运行 j2EE 项目 项目是在 NetBeans 6 7 1 中制作的 当我从那里运行它时 一切都很顺利 我在 GlassFish v3 服务器上运行它 但是当我从 asadmin 脚本运行 GlassFish 并向
  • UWP C# 禁用方向更改动画

    是否可以禁用当手机旋转发生变化 从横向变为纵向或反之亦然 时执行的 屏幕旋转 动画 你需要使用DisplayInformation AutoRotationPreferences DisplayOrientations LandscapeF
  • :remote => true 和 url_for,如何做到这一点?

    我正在尝试使整个 div 标签可点击 我尝试使用的代码如下 当我添加 remote gt true 它会抛出 Too much args 错误 2 for 1 Code div div url for 不接受 remote gt true争
  • 从脚本启动 Spring boot 应用程序

    使用普通的 spring mvn 命令 我可以从命令行启动 spring boot 应用程序并使用 Control c 终止它 不过 我已经创建了一堆服务 稍后我将对其进行 dockerize 现在它们是由 mvn 生成的普通 java j
  • JSTree 拖放问题

    我将 JSTree 与 ASP net 一起使用 为树生成的 html 看起来像 ul li a href node 1 a li li a href node 2 a li li a href node 3 a li li a href
  • 升级到 JSF 2.2 后,#{cc.clientId} 在错误的组合中进行评估

    我有一个用 JSF 2 0 PrimeFaces 3 4 编写的标签库 现在我正在尝试更新到 JSF 2 2 和 PrimeFaces 4 0 但我意识到传递给组件的属性值是在复合组件中计算的 这会导致渲染的 id 错误 enum xhtm
  • Cygwin 和 Apache Pig - 令人困惑的伪 grunt>

    我正在尝试在运行 Vista 操作系统的 Windows PC 上安装 Apache Pig 以便将其用作学习工具 我不打算在这台机器上使用 Pig 进行任何严肃的数据处理 单节点 单 JVM x local设置是我想要的 我有 Windo
  • 始终显示 JavaFX ListView 的垂直滚动条

    ListView 似乎已经有一个滚动条 我希望滚动条始终可见 原因是因为我在其上放置了一个标题 并在滚动条和标题之间的角落放置了一个按钮 如何让ListView滚动条始终显示 您可以将其放入适当大小的 JScrollPane 中 并将 JS
  • 如何在运行时更改注释/Hibernate 验证规则?

    如果有一个带有某些字段的 Java 类 我想使用 Hibernate Validator 进行验证 现在我希望我的用户能够在运行时配置进行哪些验证 例如 public class MyPojo NotEmpty String void ge
  • 我需要 iOS 设备来“存档”Xcode 项目吗?

    我是一名 iOS 开发新手 试图推出我的第一个应用程序 我在 StackOverflow 上挖掘了很长时间来寻找答案 但没有成功 有3个关键点需要牢记 我实际上并没有 iOS 设备 到目前为止我只是使用模拟器来测试该应用程序 我也有所有证书
  • 具有自动高度属性的用户控件

    我想创建将显示文本的用户控件 我需要一种在运行时调整控件大小的方法 以便它调整高度以显示所有文本 我创建了如下所示的控件 正如你所看到的 我使用以下方法绘制了图标和文本TextRenderer DrawText 不幸的是 当我调整控件大小
  • 如何 static_assert 该类型对于 c++20 中的模板非类型参数是可行的

    我有一个类型TimeDuration 现在是文字类型我可以将它用作非类型模板参数 这种用法与类型定义相距甚远 编译方面 因此如果有人修改TimeDuration这样它就不再是字面意思了 很久以后才会注意到 所以我把static assert