как загружаются многоядерные процессоры?

разговор на очень низком уровне, Lvalue или rvalue типа «массив NT» или «массив неизвестной границы T» может быть преобразован в rvalue типа «указатель на T.» Результатом является указатель на первый элемент ...

C ++ 03 §4.2 № 1:
lvalue или rvalue типа «массив NT» или «массив неизвестной границы T» может быть преобразовано в rvalue типа «указатель на T.» Результатом является указатель на первый элемент массива.

Что сбивало меня с толку в течение долгого времени, так это то, что я не совсем понимал, что будет означать rvalue типа массива. То есть я не мог придумать выражение, тип которого был бы массивом, а результатом было бы rvalue. Я прочитал этот поток, который в основном задает тот же вопрос, и принятый ответ - «нет, нет rvalue типа массива». Я думаю, у меня есть противоречие с этим.

C ++ 03 §5.2.5 N ° 4: (о выражении E1.E2)
Если E2 является нестатическим элементом данных, и типом E1 является «cq1 vq1 X», и типом E2 является «cq2 vq2 T», выражение обозначает именованный член объекта, обозначенного первым выражением. Если E1 является lvalue, то E1.E2 является lvalue.

Я предполагаю, что в противном случае это rvalue (при условии, что E2 не является ссылкой, этот случай рассматривается в §5.2.5 N ° 3 ]) и поэтому ...

struct A
{
   int a[4];
};
A f()
{
   A a;
   return a; 
}
int main()
{
   f().a; //I think this is an rvalue of array type...
}

Я вижу здесь два варианта:
Вариант1: Я прав, ура, ура, круто. В этом случае возникает вопрос: есть ли другие примеры?
Вариант 2: Я ошибаюсь, в данном случае вопрос: это дефект стандарта?

Я не знаю насчет 1, но я действительно сомневаюсь в 2, потому что, когда они говорят о преобразованиях функций в указатели, они упоминают только l-значения типов функций (очевидно, понимая, что таких r-значений нет). Так что очень вероятно, что они думали о rvalue типов массивов.

Итак, в основном мой вопрос заключается в том, придумал ли я пример rvalue типа массива, и если нет, пожалуйста, предоставьте действительный, который я твердо верю, что оно существует.

11
задан Community 23 May 2017 в 12:17
поделиться