Различаются ли эти два синтаксиса инициализатора C ++ по семантике?

Предположим, что следующий код является допустимым кодом, который правильно компилируется, что T - это имя типа, а x - имя переменной .

Синтаксис один:

T a(x);

Синтаксис два:

T a = x;

Отличается ли когда-нибудь точная семантика этих двух выражений? Если да, то при каких обстоятельствах?

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

Также, если есть особый случай, когда T является имя скалярного типа (иначе, int , long , double и т. Д.), Каковы различия, когда T является скалярным типом по сравнению с нескалярным типом?

6
задан Omnifarious 21 February 2011 в 09:50
поделиться