【发布时间】:2016-11-22 13:25:38
【问题描述】:
考虑以下示例。在我的代码中某处有一个名字x。我不知道x 是类型还是对象(可能两者兼有)。有什么方法可以获取x 的类型,即如果x 是一个类型,则为x 本身,如果x 是一个对象,则为decltype(x)?
我试着做一些微不足道的事情
decltype(int)
但这会产生错误,因为int 不是表达式。有没有替代方法可以做到这一点?
我想要类似的东西:
typedef int l;
mydecltype(l) x; // int x;
mydecltype(x) y; // int y;
我怎样才能完成这项工作?
【问题讨论】:
-
你是怎么得到一个你不知道它是类型还是对象的名字的?这个名字从何而来?问题陈述对我来说没有意义;感觉就像XY problem。
-
我想添加更多背景,但解释会非常冗长。我正在处理从其他类继承的类的预处理指令和初始化列表。在初始化列表中,类型和成员名称具有相同的格式,我无法从语法中区分它们。
-
这绝对是一个XY问题,但我无法描述整个问题,因为它不仅仅是“我需要一个文件扩展名”那么简单:)
-
@akappa:他可能做不到。显然,这是一个糟糕的设计,但如果是某个老项目,他的工作描述可能是无论如何都要去做。
-
@akappa 可能是。现在,让我们玩这个小游戏:你是一名员工,你的老板告诉你做一些愚蠢的事情。你到底要做什么? “不,我不会这样做,那太愚蠢了!”?回答问题时请记住这一点。