【发布时间】:2020-07-30 20:16:40
【问题描述】:
我知道primary expression 只是文字,this, ( expression ), id-expression。而根据C++ primary expressions - Is it primary expression or not?,主要表达式可以定义为
单位是原子的,不能进一步分解
那么可以将泛型类型分解为任何其他表达式吗? (因此本身不会是一个主要的表达方式)。这就是编译器所说的,generic 类型是 not 主要表达式,这意味着它可以进一步分解:
template <class T>
T foo(T param)
{
return T;
}
给出:
error: expected primary-expression before ‘;’ token
return T;
那么如果T 不是主要类型(根据编译器),它会分解成什么?
【问题讨论】:
-
"主表达式可以定义为原子单元" 这个定义中缺少的部分是主表达式实际上必须是一个表达式 .
-
您关注的是“主要表达”的错误部分。类型不是主表达式,因为它不是表达式,而不是因为它可以分解。
-
“不能进一步分解的原子单元”也不是 primary-expression 定义的一部分。
(x + 10)是一个主表达式。这整个问题毫无意义 -
我为另一个问题添加了另一个答案
标签: c++ templates language-lawyer