
Ilia
04.07.2018
09:30:17
Но закладываться на порядок инициализации глобалов плохо.
Если нужно, пиши глобалы статически в функциях, инициализируй их там, и функции, возвращающие ссылки на них, вызывай в нужном порядке.
Может так и не всегда надо делать, не в каждом случае, но кое-где это может помочь упорядочить инициализацию, причём гарантированно,
поскольку тут уже инициализация произойдёт при первом вызове этой содержащей фукнции, ЖЕЛЕЗНО.

Anatoly
04.07.2018
09:30:50

Ilia
04.07.2018
09:33:01
никогда не было, придумал
Ну было. Я не вру. Я так объходил проблемы с порядком инициализации, просто префиксы переменным давал AA_ BB_ CC_, ну, их немного было зависимых.
И все проблемы уходили.
Да это и объяснимо, в таблице глобальных имён модуля они же упорядочены по алфавиту, так и инициализировались

Anatoly
04.07.2018
09:33:18

Google

Ilia
04.07.2018
09:33:50
Ильюх, не было!!!
Ну чего мы будем спорить о поведении разных компиляторов? Ну, оно может быть разным.

Anatoly
04.07.2018
09:34:14

Friedrich
04.07.2018
10:00:20

Ilia
04.07.2018
10:01:08

Friedrich
04.07.2018
10:01:18
Да.

Ilia
04.07.2018
10:01:47
Ну и после тоже были некоторые :)

Anatoly
04.07.2018
10:27:55

Ilia
04.07.2018
10:33:23

Friedrich
04.07.2018
10:35:46

Ilia
04.07.2018
10:36:43
Нет. И не любят

Antony
04.07.2018
10:37:28
Нет. И не любят
Ага, поэтому у них переменные с именем i или j имеют тип integer
а с именами d или f - float

Ilia
04.07.2018
10:38:18
Ну, это уж очень давно было.

Google

Alexey
04.07.2018
10:46:49
Поддержка фортрана и в clion'е есть. То есть перспективность и распространенность фортрана примерно как у раста :-)

Antony
04.07.2018
10:47:47

Alexey
04.07.2018
10:48:19
Ждем поддержки Ады в clion'e!

Ilia
04.07.2018
10:49:28
У меня пропосал в стандарт, давайте, чтобы не нужно было писать так:
if (Qt::DisplayRole == role)
сделаем возможность писать в операторе сравнения сколько угодно равенств, больше одного.
Т.е. чтобы можно было писать что-то типа
if ( role ============= Qt::DisplayRole)
Уж тогда-то точно невозможно будет спутать == и = ...

Vitaly
04.07.2018
10:51:02

Dumitru
04.07.2018
11:07:51

Ilia
04.07.2018
11:08:33

Dumitru
04.07.2018
11:09:04

Alexey
04.07.2018
11:09:08
std::assign
Чтобы типобезопасно

Ilia
04.07.2018
11:09:27
int a = 42;
int b;
let b = a;
?

Dumitru
04.07.2018
11:10:48
ну или через copy constructor

Александр
04.07.2018
11:35:24

Alexey
04.07.2018
11:36:25
Да!
кроме того, введение еще одного ключевого слова (let) никогда не пройдет через комитет, ибо точно ломает чей-нибудь код.

Constantine
04.07.2018
11:39:02

Mikhail Voronov
04.07.2018
11:40:36

Azoyan
04.07.2018
11:41:06
Парни, а есть перевод той штуки от саттера? 3 дня назад что. Чёт я не понял про контракты. Они стандартную библиотеку хотят на контракты переписать?

Google

Constantine
04.07.2018
11:42:14

Alexey
04.07.2018
11:42:49

Constantine
04.07.2018
11:43:09

Suigintou45
04.07.2018
11:43:20

Constantine
04.07.2018
11:43:25
года два назад они const в сигнатуре member function не показывали

Alexey
04.07.2018
11:43:30

Antony
04.07.2018
11:43:31

Azoyan
04.07.2018
11:44:24

Constantine
04.07.2018
11:44:33
@antoshkka а вы не вспомните, не было proposal по разъобявлению с перемещением? Т.е. как move, только потом еще использовать нельзя

Antony
04.07.2018
11:45:50

Alexey
04.07.2018
11:46:00

Constantine
04.07.2018
11:46:11

Antony
04.07.2018
11:46:13

Constantine
04.07.2018
11:46:21

Дмитрий
04.07.2018
11:46:48
Я для такого scope пихаю, но это не всегда спасает.

Azoyan
04.07.2018
11:47:14

Никита
04.07.2018
11:48:18
то же, что дал бы assert в этом месте

Azoyan
04.07.2018
11:48:37
Но ассерт он только для дебага

Никита
04.07.2018
11:49:38
Ну а тут чуть больше возможностей по конфигурации проверки.
Сможешь оставить в релизе

Google

Antony
04.07.2018
11:50:00

Admin
ERROR: S client not available

Azoyan
04.07.2018
11:50:07
Ееееее

Alexey
04.07.2018
11:50:28
Cool!

Azoyan
04.07.2018
11:50:45

Никита
04.07.2018
11:51:39
Напишешь свой violation handler, где будешь кидать исключение, и перехватишь где-нибудь. Тогда упадешь красиво

Azoyan
04.07.2018
11:52:07
Не потеряв лицо

Constantine
04.07.2018
11:52:22

Antony
04.07.2018
11:52:39
А в чем проблема была?
Само предложение http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4158.pdf
Его рассмотрели, сказали автору работать над ним дальше, и с конца 2014 года нет новостей

Alexey
04.07.2018
11:53:02

Constantine
04.07.2018
11:54:38

Anatoly
04.07.2018
11:55:17

Azoyan
04.07.2018
11:55:51

Никита
04.07.2018
11:56:08

Constantine
04.07.2018
11:56:08
по типу nodiscard, но наоборот?
По типу
auto temp1 = /*результат промежуточных вычислений*/;
auto temp2 = foo(std::move(temp1)); /*вот это последнее использование temp1*/

Dmitry
04.07.2018
11:56:58
Или что-то вроде async queue.post(move(msg)).

Antony
04.07.2018
11:57:08
а какие возражения были?
Там предложение было в виде библиотекчной фигни. С ней возникали проблемыс lifetime при memcpy нетривиального объекта

Constantine
04.07.2018
11:59:02
т.е. технически я хочу
foo(NO_MORE_USAGE(temp1));
со сложными условиями вроде
foo(NO_MORE_USAGE(temp1), NO_MORE_USAGE(temp1)); //сразу CE
foo(temp1, NO_MORE_USAGE(temp1)); //Implementation defined
при этом lifetime temp1 не меняется, просто компилятор плюется

Antony
04.07.2018
11:59:35
Я тоже хочу :)

Google

Alexey
04.07.2018
11:59:40
в общем, хочется как в растах всяких, чтобы:
fn main() {
let foo = Foo { value: 42 };
let bar = foo;
println!("{}", foo.value); // compile time error: use of moved value: `foo.value`
println!("{}", bar.value);
}

Ilia
04.07.2018
12:00:59

Antony
04.07.2018
12:02:23
Первая проблема - это иcользование между единицами трансляции
// foo.hpp
void foo(something& bar);
// foo.cpp
void foo(something& bar) { some_thing(std::move_destruct(bar)); }
Как омпилятору понять, что после вызова foo пользоваться bar нельзя. Новый интаксис сделать?

Constantine
04.07.2018
12:04:01

Дед Пегас
04.07.2018
12:04:18
Да, го сделаем новую ссылку?) &&&

Constantine
04.07.2018
12:04:35

Дед Пегас
04.07.2018
12:05:03
Ну или взять кусочек из управляемого C++ и заюзать ^

Antony
04.07.2018
12:05:06
и destructive forwarding сделаем )

Дед Пегас
04.07.2018
12:05:11
Да!

Dmitry
04.07.2018
12:05:15
std::tru_move