来自cppref
与引用一样,结构化绑定是现有对象的别名。与引用不同,结构化绑定的类型不必是引用类型。
例如:
int a[2] = { 1, 2 };
auto [x, y] = a;
x并且y是别名而不是引用。我的问题:
如何实现类型检查功能is_alias_v<decltype(x)>?
来自cppref
与引用一样,结构化绑定是现有对象的别名。与引用不同,结构化绑定的类型不必是引用类型。
例如:
int a[2] = { 1, 2 };
auto [x, y] = a;
x并且y是别名而不是引用。我的问题:
如何实现类型检查功能is_alias_v<decltype(x)>?
我不相信这样的事情是可能的。
幸运的是,永远不需要它。
x就像它是一种美味的多汁一样使用int,无论它的来源如何。因为,好吧,就是这样!
也不要忘记,x这里y不要别名或引用 的元素a,而是一个“不可见”的副本。
别名是类型别名(例如using Id = int)或别名模板。
一个是什么意思
结构化绑定是现有对象的别名
是[x, y]作为一个整体是两个整数数组(在本例中)的别名(新名称)。它与 x 的类型名称无关。
如果我们有一些类型别名using Id = int,那么一个类型特征就会知道一个是否是Id一个。我不知道如何实现泛型。intstd::is_same_t<Id, int>is_alias_t<Id>