Size: a a a

2020 July 28

D

Danya in supapro.cxx
Vladimir Suisei
void A::foo()
{
 if (var)
   return ;
 static int a = bar();
}

Если var == 0, вызовется ли bar() ?
Да
источник

D

Danya in supapro.cxx
Только один раз
источник

D

Danya in supapro.cxx
Когда первый раз будет вызван foo при var == 0
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Т-34 85
а это зависит от значения флага O?
Какого флага?
источник

Т8

Т-34 85 in supapro.cxx
Artöm Bakri Al-Sarmini
Какого флага?
оптимизации. Ну, при O0 точно никакого copy elision, а вот при O1 работает
источник

Т8

Т-34 85 in supapro.cxx
в таком роде
источник

D

Danya in supapro.cxx
ptrNine
clangd и так поддерживает концепты
хм, clangd надо передать аргумент -std=c++20? Он именно так называется?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Artöm Bakri Al-Sarmini
Во втором случае вполне вероятно, в первом возможно (но я бы не рассчитывал)
Второй случае обязательный уже вроде
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
(с 17 стандарта)
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Т-34 85
оптимизации. Ну, при O0 точно никакого copy elision, а вот при O1 работает
У меня сомнения, что компиляторы умны в этом месте. Нужно каждый тестить
источник

Т8

Т-34 85 in supapro.cxx
Artöm Bakri Al-Sarmini
У меня сомнения, что компиляторы умны в этом месте. Нужно каждый тестить
хорошо, спасибо
источник

p

ptrNine in supapro.cxx
Danya
хм, clangd надо передать аргумент -std=c++20? Он именно так называется?
Оно в compile_commands.json должно оказаться в корне проекта, если в CMake стоит 20 стандарт.
Мб в vscode по-другому как-то работает, я не знаю
источник

p

ptrNine in supapro.cxx
Danya
хм, clangd надо передать аргумент -std=c++20? Он именно так называется?
еще можно в корне создать файл compile_flags.txt
и туда напрямую вбить флаги для clangd
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Т-34 85
наверное, главный вопрос - может ли copy elision убрать вызов конструктора копирования при передаче по значению локального объекта на стеке, который только в этом месте и используется? А если это временный объект на месте вызова?
Судя по cpr, в первом случае всегда копия
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Artöm Bakri Al-Sarmini
У меня сомнения, что компиляторы умны в этом месте. Нужно каждый тестить
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Второй случае обязательный уже вроде
Да
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Artöm Bakri Al-Sarmini
Судя по cpr, в первом случае всегда копия
В стандарт идти не хочу, можешь сам это сделать
источник

Т8

Т-34 85 in supapro.cxx
спасибо, теперь понятно. Да, печально, я думал, что будет лучше
источник

D

Danya in supapro.cxx
ptrNine
еще можно в корне создать файл compile_flags.txt
и туда напрямую вбить флаги для clangd
Можешь сказать как его заполнить для С++20?
источник

D

Danya in supapro.cxx
-std=c++20
-fconcepts

?
источник