предложение при остановке программы запускать еще одну функцию до уничтожения статических объектов, если хочется что-то с ними сделать (скажем, записать что-нть в файл): http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2383.html
сейчас это в общем случае сделать нельзя:
For an object with static storage duration constructed after a function is registered with atexit, then following the call to exit, the registered function is not called until the execution of the object’s destructor has completed.
т.е. всеми любимый синглтон Майерса идет лесом.
Предложение по ограничению using: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2386.pdf
Если сейчас заюзать std в каком-нть пространстве имен, а потом заюзать само это пространство, то std автоматически придет в комплекте. Иногда это нужно, иногда — нет.
Далее идут покушения на святое.
Предложение убить POD: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
Вернее, разделить его его свойства на части — что считать binary compatible, что — trivial, и т.д.
Если примут — многие конструкции, которые не попадали под все требования ПОДов, попадут под определенные новые требования и с ними станет работать намного проще (например, появится возможность их двигать через memcpy.
Спасибо что держишь в курсе. Так держать!
J>Предложение убить POD: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm J>Вернее, разделить его его свойства на части — что считать binary compatible, что — trivial, и т.д. J>Если примут — многие конструкции, которые не попадали под все требования ПОДов, попадут под определенные новые требования и с ними станет работать намного проще (например, появится возможность их двигать через memcpy.
ШЕ>не будет работать что ли? ШЕ>Или я что-то не так понял
А ктото собирается делать atomic storage duration ? Вон exception handling прописан и у всех отговорки что деление на 0 несинхронное и типа не обязательное. Для этого поддержка со стороны ос нужна, если не железа . Да и проку мало от hndl&&hndl->is_open() Нужно боле крупные кески лочить, а не один оператор до ;
P>А ктото собирается делать atomic storage duration ? Вон exception handling прописан и у всех отговорки что деление на 0 несинхронное и типа не обязательное. Для этого поддержка со стороны ос нужна, если не железа . Да и проку мало от hndl&&hndl->is_open() Нужно боле крупные кески лочить, а не один оператор до ;
При чём тут исключения и деление на ноль?
Я к тому что сейчас мне компилятор гарантирует, что правая часть будет вычисляться только если hndl!=0
Многозадачность в этом куске кода меня мало волнует.
Deleted as redundant with descriptions of operators (original text from p17):
(*зачёркнуто*)
In the evaluation of each of the expressions
a && b
a || b
a ? b : c
a , b
using the built-in meaning of the operators in these expressions (5.14, 5.15, 5.16, 5.18), there is a sequence point after the evaluation of the first expression. [ Footnote: The operators indicated in this paragraph are the built-in operators, as described in clause 5. When one of these operators is overloaded (clause 13) in a valid context, thus designating a user-defined operator function, the expression designates a function invocation, and the operands form an argument list, without an implied sequence point between them. —end footnote ]
(*зачёркнуто*)
Хотя скорее всего всё останется как есть, просто я не умею читать заметки к стандарту
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, jazzer, Вы писали:
КЛ>[]
КЛ>Strongly Typed Enums (revision 3)
КЛ>хорошая идея
Эта идея еще в Паскале было реализована, и в С мне кажется было построже.
1. В СПП кривая реализация константности — попытка усидеть на 2-х стульях исполнения и рунтайм. Кстати в проекте можно иметь одноименные глобальные обьекты, которые отльчаются только констаностью.
2. понаписано куча шаблонов где енум как инт.
3. енум всеравно кудато писать, передавать нужно. Или для чисто внутренних целей однострочеый enum {a=,b=...}, а для серьезных применений многострочный дефайн?
ШЕ>Я к тому что сейчас мне компилятор гарантирует, что правая часть будет вычисляться только если hndl!=0 ШЕ>Многозадачность в этом куске кода меня мало волнует.
Я думал hndl какойто атомарный, вроде ссылка про это была. А при перегрузке sequence point нету и быть не может
ШЕ>не будет работать что ли? ШЕ>Или я что-то не так понял
не так понял.
Надо читать все целиком, а не одно только это.
Если посмотришь ниже, то увидишь (я удалил зачеркнутое, чтоб не мозолило глаза):
5.14p2 (logical AND operator), and also 5.15p2 (logical OR operator):
The result is a bool. If the second expression is evaluated, every value computation and side effect associated with the first expression is sequenced before every value computation and side effect associated with the second expression.
Т.е. описываются изменения во втором параграфе.
Первый параграф никуда не делася и в нем требование осталось:
The && operator groups left-to-right. The operands are both implicitly converted to type bool (clause 4).
The result is true if both operands are true and false otherwise. Unlike &, && guarantees left-to-right
evaluation: the second operand is not evaluated if the first operand is false.