如何在类声明之外定义 sfinae 类的成员?

2023-12-07

阅读完诸如此类的问题后sfinae 位于类体外部定义的成员函数(这不是同一个问题),另外,当使用 SFINAE 方法仅启用算术类型的类时,我仍然没有找到在类声明之外定义成员函数体的好方法。

#include <type_traits>

template <typename T,typename = typename std::enable_if<std::is_arithmetic<T>::value,T>::type>
class foo
{
public:
    void bar();
};

template <typename T>
void foo<T>::bar ()
{
}

在此示例中,我收到错误:

error: invalid use of incomplete type 'class foo<T>'
void foo<T>::bar ()
^
error: declaration of 'class foo<T>'
class foo
^

而如果我这样声明:

#include <type_traits>

template <typename T,typename = typename std::enable_if<std::is_arithmetic<T>::value,T>::type>
class foo
{
public:
    void bar()
    {
    }
};

它运行起来没有任何问题。

我正在使用 mingw-w64 (w64 3.3) 来编译此代码。


foo有两个模板参数,即使其中之一未命名,也默认用于 SFINAE。因此:

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

如何在类声明之外定义 sfinae 类的成员? 的相关文章

随机推荐

  • 新手:在函数调用上挂起浏览器

    我刚刚开始学习 JavaScript 想知道为什么当我单击 调用函数 按钮时这个简单的代码片段会挂起 我缺少什么
  • 从 MATLAB 运行多进程应用程序

    我用 VC 编写了一个多进程应用程序 并尝试使用命令行参数执行它system来自 MATLAB 的命令 它可以运行 但只能在一个核心上运行 有什么建议吗 Update 事实上 它甚至没有看到第二个核心 我使用了 OpenMP 并使用了omp
  • 在windows和pycharm中设置SPARK-HOME路径变量

    我是 SPARK 的新手 并尝试在 Windows 中使用它 我能够使用 hadoop 的预构建版本成功下载并安装 Spark 1 4 1 在以下目录中 my spark directory bin 我可以运行 Spark shell 和
  • Google Android应用内购买“内容交付” 如何正确交付内容?

    我目前正在尝试对应用内购买进行编码 我一直在寻找有关 Google 无法处理的一些内容的最佳实践的文档 信息和教程 到目前为止我所做的 我正在运行一个计费服务来处理与 Google Play 的对话 该服务可以完成 示例 交易 并且我的应用
  • Python Kafka 消费者缺少轮询一些消息

    我的 Kafka 消费者的代码如下所示 def read messages from kafka topic my topic consumer KafkaConsumer bootstrap servers my host1 my hos
  • 使用序列化在实体框架中的两个 ObjectContext 之间复制实体

    Preface 我知道这可能已经被视为疯狂的问题 但我正在寻找最有教养的建议和PROVEN关于如何进行复印的建议ALL来自某个实体的数据 即所有实体和关系 ObjectContext到一个新创建的ObjectContext在另一家商店支持
  • 如何将 json 字符串发送回 jquery

    我需要将一些数据发送到外部 php 页面 并且该页面必须将所需的数据发送回 jQuery 我的问题是如何将数据从外部页面发送回发送它的页面上的 jQuery 这是将数据发送到外部页面的 jQuery 代码 function LoadImag
  • GWT 向导未显示在 Eclipse 向导菜单中

    谷歌文档http code google com webtoolkit tools gwtdesigner wizards gwt uibinder dialogbox html在 Eclipse 中显示 GWT 向导 但是 在我的系统上
  • Murmur3 散列 Python 和 Java 实现之间的不同结果

    我有两个不同的程序 希望分别在 Python 和 Java 中使用 Murmur3 哈希相同的字符串 Python 版本 2 7 9 mmh3 hash128 abc 给出 792679617637421130190083470206475
  • 每个类在jar文件中都有两个类文件

    我有一个 jar 文件 每个 java 文件有两个类文件 Java Foo java Bar java 类文件 Foo class Foo class Bar class Bar class 我已经验证每个类只有一个 java 文件 jav
  • 将 powershell 变量值返回给 c# 应用程序

    我正在从 C 运行 powershell 脚本 string scriptPath script myscript ps1 Runspace runspace RunspaceFactory CreateRunspace runspace
  • g++ 的 json-spirit 链接器标志是什么?

    我在任何地方都找不到这个 我已经在我的 ubuntu 服务器上安装了 json spiritapt get install json spirit dev 必须与什么链接器标志一起使用g 使用 json spirit 唯一的图书馆列在该包中
  • WebLogic 的 JavaEE API

    有不同的服务器特定 JavaEE API 实现 例如 glassfish javaee 或 jboss javaee 它们作为单独的 jar 文件分发 并且可以使用 Maven 依赖项附加到某些项目 有没有专门为WebLogic AS设计的
  • UDP 数据包未被 Wireshark 捕获,但被 UDP 应用程序捕获

    我有一个设计并运行的应用程序 它在端口上接收 UDP 广播 该应用程序一直工作得很好 但我想将应用程序收到的数据包与 Wireshark 捕获进行比较 我试图确保以最小的数据丢失捕获尽可能多的数据包 我最初认为我应该运行 Wireshark
  • 使用 GraphicsServices.h/GSEvent 以及使用 Xcode 编译 CLI iPhone 工具

    我将其发送给 KennyTM 在 GitHub 上有所有私有框架标头 但我想我也会在这里问 以防万一有人有一些好的想法或任何方法来帮助我 我正在尝试编写一个命令行实用程序 它发送 GSEvents 来操作键盘 触摸 拖动屏幕上的元素以及操作
  • 即使使用 CREATE 表授予,立即执行也会失败

    我在使用存储过程中的立即执行命令创建表时遇到问题 但是我收到 权限不足 的错误 我检查了其他线程并确保用户具有授予它的 CREATE TABLE 权限 但是我仍然看到同样的错误 SQL gt select from USER SYS PRI
  • WooCommerce Cart - 动态价格变量传递到自定义价格挂钩

    我在变量中获取动态自定义价格 我想将其传递给中的挂钩函数woocommerce before calculate totals钩在购物车中 但它不起作用 这是我的代码 add 200 I want to pass this variable
  • java.lang.NullPointerException:尝试调用虚拟方法“com.google.firebase.database”

    我正在尝试从 Firebase 数据库将数据检索到 RecyclerView 中 但遇到此错误 java lang NullPointerException 尝试调用虚拟方法 com google firebase database Dat
  • Web 服务与类文件 - 性能

    我试图找出执行此操作的最佳方法 我正在开发一个项目 并将所有数据访问层代码放入 ASMX 文件中 以使它们与我的表示层分开 我从后台代码调用所有方法并使用类文件等 Web 服务 我根据另一位开发人员的工作遵循这一做法 到目前为止 对此有两种
  • 如何在类声明之外定义 sfinae 类的成员?

    阅读完诸如此类的问题后sfinae 位于类体外部定义的成员函数 这不是同一个问题 另外 当使用 SFINAE 方法仅启用算术类型的类时 我仍然没有找到在类声明之外定义成员函数体的好方法 include