【问题标题】:Is a type of a object primary expression in c++?c++ 中的对象主要表达式是一种类型吗?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2015-03-21
    • 2018-01-26
    • 2019-09-25
    • 2016-12-13
    • 2017-09-19
    相关资源
    最近更新 更多