2014-02-20 4 views
5

Пункт 8.5.3/5 в n3797:Является ли моя интерпретация правильной относительно n3797 8.5.3/5?

Ссылка на тип «CV1 T1» инициализируется выражением типа «CV2 Т2» следующим образом:

  • Если ссылка является ссылка Левой и выражение инициализатора

    • является именующей (но не битовым поле), и «CV1 Т1» является ссылкой совместит с «CV2 Т2» или

    • имеет тип класса (то есть, Т2 является тип класса), где T1 не ссылаться на связанную с Т2, и может быть преобразован в объект типа «CV3 T3, » где„CV1 Т1“является ссылкой совместит с„CV3 T3“(это преобразования выбирается путем перечисления применимого конверсию функции (13.3.1.6) и выбрать лучшее от одного до перегрузки разрешения (13,3)),

...

Английский не является моим родным языком, но фраза жирным шрифтом (курсив мой), мне кажется, чтобы дать идею, что T1 может быть конвертирован в объект типа CV3 T3, который я считаю, не правильно , По моему разумению, T2 тип, который должен быть преобразован в CV3 T3, как, например:

struct B : A { operator int&(); } b;  
int& ir = B(); 

шоу.

+0

'N3485' - последний проект * C++ 11 *, то, что вы ссылаетесь, будет' C++ 1y', см. [Где найти текущие стандартные документы C или C++?] (Http: // stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents/4653479#4653479) –

+0

@ShafikYaghmour Спасибо за ссылку. –

+0

Так как вы цитируете 'N3797', это относится и к * C++ 1y *. Формулировка почти идентична в 'N3485'. –

ответ

4

Вы не читаете это правильно, это то, как вы должны читать его:

выражение инициализатор ... имеет тип класса (т.е. T2 является тип класса) ... и может быть преобразуется в объект типа «CV3 T3,»

, где выражение инициализатор ссылается на:

[...] инициализируется выражением типа «CV2 Т2» следующим

1

Нет, ваша интерпретация неверна.

  • T1 = ссылка, которая инициализируется
  • T2 = типа класса
  • T3 = именующего что T2 может быть преобразован в

Котировочные сниппают о том, что T2 (то есть. Тип класса) можно преобразовать в значение l: не ссылка, связанная с T2.

+0

Мне кажется, что оба ответа верны, но могут быть лучше выражены. –

+0

@ david.pfx: Тогда напишите лучший ответ? –

+0

@ KerrekSB: не так много точек, как только это принято. –

Смежные вопросы