Как уже ответили другие: Да, это законно. И да, это гарантировано стандартом для работы.
И я считаю это ужасным каждый раз, когда вижу это, заставляя меня делать паузу: «vec(vec)
? WTF? Ах да, vec
- это член переменной ... "
Это одна из причин, почему многие, включая меня, любят использовать соглашение об именах, которое дает понять, что переменная-член является переменной-членом. Соглашения, которые я видел, включают добавление суффикса подчёркивания (vec_
) или префикса m_
(m_vec
). Затем инициализатор читает: vec_(vec)
/ m_vec(vec)
, что не вызывает затруднений.