来自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
一个。我不知道如何实现泛型。int
std::is_same_t<Id, int>
is_alias_t<Id>