то, что не умеет gcc, мы видим в примере выше (элементарщина же)
что не умеет clang? ну я к тому, что утверждая что-то общее, хотелось бы увидеть хотя бы примеры
забудьте про gcc, только clang
gcc оставляем только как референсный компилятор в случаях, когда возникают сомнения в коде clang (но и то в 100% случаев clang прав)
А, ещё момент. Перед тем, как говорить, что какой-то вариант быстрее и меньше инструкций и т.п., заходите на http://gcc.godbolt.org, справа там вписывайте -O3 в параметры и сравнивайте. Очень много удивлений будет.
Foo * const foo1 (обратите внимание на const) и Foo & foo2 — вот что одно и то же на бытовом уровне понимания.
Но фактически ссылки лучше рассматривать не как "указатели, но только без звёздочек и стрелочек", а как синонимы, т.е. ссылка — это просто альтернативное имя для переменной, так удобнее думать. Потому что компилятор в большинстве случаев соптимизирует все ссылки, т.е. они скорее всего (если вы особенно не постараетесь) не будут ничего стоить дополнительно.
с 3.1 — на любые объекты, т.е. с XP
что не умеет clang? ну я к тому, что утверждая что-то общее, хотелось бы увидеть хотя бы примеры
gcc оставляем только как референсный компилятор в случаях, когда возникают сомнения в коде clang (но и то в 100% случаев clang прав)
Послушайте умных людей.
Foo * const foo1
(обратите внимание на const) иFoo & foo2
— вот что одно и то же на бытовом уровне понимания.Но фактически ссылки лучше рассматривать не как "указатели, но только без звёздочек и стрелочек", а как синонимы, т.е. ссылка — это просто альтернативное имя для переменной, так удобнее думать. Потому что компилятор в большинстве случаев соптимизирует все ссылки, т.е. они скорее всего (если вы особенно не постараетесь) не будут ничего стоить дополнительно.
им ведь зп за это не платят
Потому что RAII по идее замена finally.