首页 > 解决方案 > c++ 中的对象主要表达式是一种类型吗?

问题描述

我知道 aprimary expression只是文字,this,(表达式),id-expression。并且根据C++ 主要表达式 - 是否是主要表达式?,主要表达式可以定义为

在某种意义上说它们是原子的,它们不能被进一步分解

那么可以将泛型类型分解为任何其他表达式吗?(因此本身不会是一个主要的表达方式)。这就是编译器所说的,泛型类型不是主要表达式,这意味着它可以进一步分解:

template <class T>
T foo(T param)
{
    return T;
}

这使:

error: expected primary-expression before ‘;’ token
     return T;

所以如果类型T不是主要的(根据编译器),它会分解成什么?

标签: c++templateslanguage-lawyer

解决方案


您清楚地知道,有一个被认为是主要表达式的列表,而 type 根本不是其中之一。在表达式的意义上,类型的分解是没有意义的,因为类型不能被视为表达式。


推荐阅读