Я вижу такой код:
Foo const& foo = val; // (A)
const Foo& foo = val; // (B)
Просто другое размещение const
.
Хотя оба будут работать нормально, я просто хотел бы знать правильную грамматику.
Я прочитал это следующим образом из R-> L.
(A) foo является ссылкой const
на тип Foo
- не уверен, является ли val
const
(B) foo является ссылкой на const
type Foo
- что означает val
is const
Учитывая, что ссылки не являются объектами, и технически все ссылки const
(они не могут ссылаться на другой объект),
Грамматическая перспектива , считается ли (A) Foo const& foo = val;
"запутанным" определением?
И просто используйте вместо этого:
const Foo& foo = val; // referring to const Foo
Foo& foo = val; // referring to non-const Foo