d
if (!foo1() || !foo2() || !foo3)Size: a a a
d
if (!foo1() || !foo2() || !foo3)O
if (!foo1() || !foo2() || !foo3)If a sequence point is present between the subexpressions E1 and E2, then both value computation and side effects of E1 are sequenced-before every value computation and side effect of E2
There is a sequence point after evaluation of the first (left) operand and before evaluation of the second (right) operand of the following binary operators: && (logical AND), || (logical OR), and , (comma).АК
if (foo1() || foo2() || foo3)d
АК
d
D
все вернут true"ИЛ
Е
ИЛ
ПК
LA
LA
z не может выполниться до начала других потоков? К тому же, если я перенесу вызов join() после assertion, то оно наоборот, всегда проваливается. То есть обычный поток начинает своё исполнение после вызова join()/detach()? И что происходит с std::async() по умолчанию? Поток может и не запускаться до вызова get(), однако в этой точке поток выполнения всегда дождётся результата?ПК
z не может выполниться до начала других потоков? К тому же, если я перенесу вызов join() после assertion, то оно наоборот, всегда проваливается. То есть обычный поток начинает своё исполнение после вызова join()/detach()? И что происходит с std::async() по умолчанию? Поток может и не запускаться до вызова get(), однако в этой точке поток выполнения всегда дождётся результата?std::thread и окончанием join()LA
std::thread и окончанием join()AN
ПК
++z;?LA
++z;?z, что откровенно странно, то есть. Это вообще не мой пример. Но там, откуда я его взял, утверждается, что assertion никогда не провалитсяVK
++z;?ПК
z, что откровенно странно, то есть. Это вообще не мой пример. Но там, откуда я его взял, утверждается, что assertion никогда не провалится