引用自 WinRT header 的消费和委托模板有何不同?

What is the different between consume and delegate template quoted from WinRT header?

为什么不使用模板类型定义 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>;

显示的代码不包含 struct consume 的定义,既没有也没有模板类型。

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

template <typename T>
struct consume;

它只是说明了这种类型确实存在并且它采用模板参数。

struct delegate 相同。

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

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