【问题标题】:What is the different between consume and delegate template quoted from WinRT header? [closed]从 WinRT 标头引用的使用和委托模板有什么区别? [关闭]
【发布时间】:2019-09-13 16:27:34
【问题描述】:

为什么不使用模板类型定义struct consume
consume_tdelegate_t 有什么区别?

template <typename T>
struct consume;

template <typename D, typename I = D>
using consume_t = typename consume<I>::template type<D>;

template <typename T>
struct delegate;

template <typename T, typename H>
using delegate_t = typename delegate<T>::template type<H>;

【问题讨论】:

  • 你问题的后半部分已回答here
  • 你应该问写它的人。可惜他们没有留下任何记录的 cmets。
  • 这是来自 Windows 运行时吗?你是从 MSDN 得到的吗?试图确定您的标签的相关性,但这很困难,因为您没有为这个问题提供上下文。
  • 我没有看到struct consume 的定义(有或没有模板类型)。我只看到一个声明。
  • consume_t和delegate_t的区别是一个基于consume,一个基于delegate。两者都在别处定义,可能有很大不同。

标签: c++ templates windows-runtime c++14 msdn


【解决方案1】:

显示的代码不包含struct consume 的定义,无论有无模板类型。

然而,这是它的(前向)声明

template <typename T>
struct consume;

它只声明这种类型确实存在并且它需要一个模板参数。

struct delegate 也一样。

所以很明显两者都存在,但定义(其他地方)可能不同。

这反过来意味着delegate_tconsume_t 基于不同的模板类型,因此也(很可能)不同,尽管它们的定义似乎如此相似。

【讨论】:

  • 源码来自标准的WinSDK路径,例如:C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\cppwinrt\winrt\base.h 请问帮助引用“结构消耗”定义的路径?我可以找到从消费继承的其他依赖类型,例如“struct require_one”
  • 你能改用一个工具来搜索你的驱动器吗?想到了 unix 工具 grep,它有 Windows 版本。否则请考虑提出一个单独的问题,因为我认为这个问题已回答。找到定义是一个新的定义。
  • 我稍微改述了这个问题,但我仍然无法使用我的工具找到消费者/委托模板的定义,从这两个模板继承的依赖类型太多。感谢您提供链接资源,非常有帮助。
  • 我需要知道这两种前向声明类型之间的区别,也许有人可以找到实际的接口/类型声明。
  • 在得到答案后编辑问题时要小心。人们不喜欢“移动目标问题”。然而,在这种情况下,编辑后的问题实际上更适合我回答的主要部分,所以没关系,不用担心。并感谢您的接受。风格不错。
猜你喜欢
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2011-10-12
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多