有时候,代码中会出现复杂的表达式。例如,频繁使用Boost库就会导致这些表达式的出现。如果我想
typedef
这些表达式的类型,就需要编写它的类型。有没有一种方法可以在编译时(或运行时)知道这个类型?也许Boost提供了适当的功能。我想像这样使用它:#pragma message (...expression...)
编辑:如果在编译时类型检测存在问题,则运行时类型检测也适用。例如,像下面这样的函数就很合适。
template <typename T> std::string detectExpressionType(T t);
decltype()
了。这个问题标记为C++03,所以问题实际上是:我没有C++11的decltype
,那么我如何在编译时检测表达式的类型? - Manu343726decltype
至少是一个有用的搜索词,可以找到C++11之前非标准关键字和类似的笨拙技术,这些技术促成了decltype
的标准化。 - Tony Delroy