Size: a a a

2020 July 14

A

Alex in pro.cxx
Всё, С++ версия документации снимает все вопросы, извините, что так долго приставал. Буду внимательнее при переходе по ссылкам из Гугла!
источник

VS

Vlad Serebrennikov in pro.cxx
Alex
Упс) Не заметил, вот же... Спасибо)
подвох еще можно было заметить по описанию порядка вычислений в терминах sequence point

с С++11 для этого используются отношения sequenced before и happens before
источник

A

Alex in pro.cxx
для меня термин привычен, поэтому ничего не смутило, хотя в принципе я знал о таком изменении
источник

A

Alex in pro.cxx
постараюсь быть внимательнее, спасибо)
источник

O

Ofee in pro.cxx
Alex
Вообще странно, написано же, что запятая - это sequence point и на ней все побочные эффекты проявляются до вычисления правой части. Разве деструкция анонимного объекта - не побочный эффект, который должен произойти до вычисления правой части?
Я чуть выше дал ссылку на SO, где дан ответ именно на этот вопрос, побочным эффектом является непосредственно вызов конструктора, но не деструктора.

Вообще, если расценивать вызов конструктора как обычной функции, то логично ожидать, что речь идёт о побочных эффектах, вызванных непосредственно этой функцией (= конструктором), но не созданным объектом
источник

A

Alex in pro.cxx
Здесь вопрос в том, какой именно логики придерживается стандарт, мне не кажется, что один из вариантов очевидно правильнее другого
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex
Вообще странно, написано же, что запятая - это sequence point и на ней все побочные эффекты проявляются до вычисления правой части. Разве деструкция анонимного объекта - не побочный эффект, который должен произойти до вычисления правой части?
То, что связано с лафтаймом объектов, это не побочный эффект
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alexander T

if(((std::lock_guard(mtx), 0) || cond)) {}

Вот так точно должно работать и не зависит от порядка вычисления аргументов до c++17. Но выглядит отвратно.
В 17 ничего в этом выражении не изменилось
источник

D

Dr Zlo in pro.cxx
Добрый день, подскажите как скомпилировать вот этот код?
https://repl.it/@whojustthedocto/template-graphics#main.cpp
источник

D

Dr Zlo in pro.cxx
Я понимаю в чем причина ошибки и механизм её вызвавший, но не понимаю можно ли в общем виде это как-то решить
источник

МВ

Макс Воробьев... in pro.cxx
Dr Zlo
Добрый день, подскажите как скомпилировать вот этот код?
https://repl.it/@whojustthedocto/template-graphics#main.cpp
из g.cpp перенести все в g.h
источник

D

Dr Zlo in pro.cxx
Ой, да, уточню что без этого, вопрос в том как реализацию шаблонов вынести из заголовочного файла
источник

d

disba1ancer in pro.cxx
Dr Zlo
Ой, да, уточню что без этого, вопрос в том как реализацию шаблонов вынести из заголовочного файла
никак
источник

S

Stas in pro.cxx
Dr Zlo
Ой, да, уточню что без этого, вопрос в том как реализацию шаблонов вынести из заголовочного файла
В другой заголовочный)
источник

S

Stas in pro.cxx
@Dr_Zlo13 , @supapro если что.  Там лучше задавать аналогичные вопросы.
источник

D

Dr Zlo in pro.cxx
я так понимаю что единственное решение на данный момент это в cpp файле прописать ручками инстанцирование шаблона
источник

МВ

Макс Воробьев... in pro.cxx
Dr Zlo
Ой, да, уточню что без этого, вопрос в том как реализацию шаблонов вынести из заголовочного файла
https://github.com/MishkaRogachev/JAGCS/tree/master/sources/db/generic_repository можешь посмотреть, как тут сделано
источник

d

disba1ancer in pro.cxx
Dr Zlo
я так понимаю что единственное решение на данный момент это в cpp файле прописать ручками инстанцирование шаблона
тоже вариант, но тогда будут доступны только те варианты шаблона, что инстанцированы
источник

D

Dr Zlo in pro.cxx
да, рассматривал это решение, но как-то костыльно выглядит
источник

AS

Anatoly Shirokov in pro.cxx
Dr Zlo
Добрый день, подскажите как скомпилировать вот этот код?
https://repl.it/@whojustthedocto/template-graphics#main.cpp
единственный способ оставить реализацию шаблона в cpp - это использовать явное инстанцирование для фиксированного набора аргументов шаблона. например, https://github.com/anatoly-spb/cmake_exe_dll/commit/13ba4968caec318ae6fafdc29a3e80c96b3c0163
источник