1

来自cppref

与引用一样,结构化绑定是现有对象的别名。与引用不同,结构化绑定的类型不必是引用类型。

例如:

int a[2] = { 1, 2 };
auto [x, y] = a;

x并且y是别名而不是引用。我的问题:

如何实现类型检查功能is_alias_v<decltype(x)>

4

2 回答 2

3

我不相信这样的事情是可能的。

幸运的是,永远不需要它。

x就像它是一种美味的多汁一样使用int,无论它的来源如何。因为,好吧,就是这样!

也不要忘记,x这里y不要别名或引用 的元素a,而是一个“不可见”的副本。

于 2019-08-11T11:40:17.780 回答
2

别名是类型别名(例如using Id = int)或别名模板。

一个是什么意思

结构化绑定是现有对象的别名

[x, y]作为一个整体是两个整数数组(在本例中)的别名(新名称)。它与 x 的类型名称无关。

如果我们有一些类型别名using Id = int,那么一个类型特征就会知道一个是否是Id一个。我不知道如何实现泛型。intstd::is_same_t<Id, int>is_alias_t<Id>

于 2019-08-11T12:48:02.093 回答