
Alexander
08.01.2018
14:50:08
Не так?
constexpr используется для компайлтайм вычислений с использованием всяких constexpr функций
constexpr переменная гарантирует тебе, что она будет вычислена на этапе компиляции.
const гарантирует, что всего лишь не будет меняться

Alexander
08.01.2018
14:50:55
А ок

Серж
08.01.2018
14:51:18
Не гарантирует

Google

Серж
08.01.2018
14:51:21
Фактически уж точно

Alexander
08.01.2018
14:51:37

Серж
08.01.2018
14:51:55
Есть mutable и const_cast

Alexander
08.01.2018
14:52:08

Серж
08.01.2018
14:52:21
Это если не брать в расчёт грязные трюки с указателями

Alexander
08.01.2018
14:52:36

Серж
08.01.2018
14:52:45
Вот в расте я понимаю, константа - значит не меняется

Ignat
08.01.2018
14:55:51
Что, в unsafe нельзя узнать её адрес?

Aidar
08.01.2018
14:56:25
mutable нужен же для конст методов
const методы это типа: если между вызовами конст методов не было вызова неконст то результат одинаков
ясен пень что это не подразумевает неизменяемость служебных штук

Berkus
08.01.2018
14:59:48

/dev
08.01.2018
15:26:22

Google

Aidar
08.01.2018
15:27:45
тут нужно уточнять чтоза изменения

Alexander
08.01.2018
15:31:15
тогда сами человеку обьясняйте, что const делает
ну или отправляйте его читать Стандарт ?

Pavel
08.01.2018
15:32:34

Alexander
08.01.2018
15:33:00
уже выше писали и про mutable, и про указатели
так что всё окей)

Дмитрий
08.01.2018
15:54:13
Господа! Если я вызвал конструктор вектора с указанием размера (то есть от одного числа), стоит ли ожидать, что capacity == size? А то в данный момент при отладке выполз очень странный экземпляр, который сразу после конструктора выглядит как: "size как ты просил, 3к, capacity что-то более чем 10значное"?

Terik23
08.01.2018
15:59:35

Дмитрий
08.01.2018
16:01:53
Там столько всякого разного вокруг, что даже не оч ясно. Я залез внутрь вектора, кажется в его полях всё правильно. Видимо, gdb оч упорот при отладке OpenCL и OpenGL одновременно.
Или это симптомы, что мои обращения к памяти напоминают Халка, которого попросили написать эссе на тему "Крушить — очень плохо"?
А нет, кажется реально память похерена, end_of_storage раньше начала вектора.
Извините, отбой.

Terik23
08.01.2018
16:06:34
Интересная ситуация в любом случае. удачи в разработке!

Дмитрий
08.01.2018
16:13:37
Ещё интереснее: вставляем ассерт - чинится. Кажется, компилятор решил оптимизнуть поле вектора, оч удобно, зараза.

Alexander
08.01.2018
16:52:15
это вам не это)

Evgeniy
08.01.2018
17:09:07

Дмитрий
08.01.2018
17:21:16

Evgeniy
08.01.2018
17:22:41
попробуй валгринд

Google

Дмитрий
08.01.2018
17:23:27
Ещё хуже

Berkus
08.01.2018
17:23:31
валгринд вряд ли дружит

Nik
08.01.2018
17:25:11
Валгринд через эмуляцию все гоняет и эмулировать cuda еще не научились

Berkus
08.01.2018
17:26:53

Evgeniy
08.01.2018
17:27:52
а если куду ллвмом собрать?

Дмитрий
08.01.2018
17:30:39
Хип-то мой, CPUшный)

Hannibal
08.01.2018
17:38:28
Какой софт использовать для эмуляции com порта
Windows
Хочу понять как девайс воспринимает данные моей проги

Серж
08.01.2018
18:13:24
com0com
А вообще лучше портмонитор и смотри обмен с реальным говном мамонта

Hannibal
08.01.2018
18:20:32
Ок

Олег
08.01.2018
20:30:44
Снова добрый вечер.
Есть у меня класс. Умеет приводиться к bool (определён operator bool () const). Определены ещё два сравнения (operator == и operator <=). А я беру и два экземпляра сравниваю на >=.
Ожидание: ошибка компиляции.
Реальность: оба экземпляра привелись неявно к bool и сравнили то, что получилось.
Есть под этим какая-нибудь тайная логика? Есть ли возможность получать ожидаемый результат? Понятно, что я сейчас доопределю четыре оператора и вроде бы успокоюсь, но всё равно интересно.

Berkus
08.01.2018
20:32:36
>= не сравнивает булы, с чего бы им приводиться?

Ignat
08.01.2018
20:32:49
explicit operator bool?

Дед Пегас
08.01.2018
20:36:50
Тут есть решение.
Нужке explicit typedef, но его пока нет.
Нужен*

Олег
08.01.2018
20:37:44
>= не сравнивает булы, с чего бы им приводиться?
Сам удивлён, но вот (gcc version 6.4.0 (Gentoo 6.4.0 p1.1)).
https://pastebin.com/0U0eJCjh
$ g++ -O2 -Wall -Wextra -Werror -o sample -x c++ sample.c++
$ ./sample
[warning] casted to bool!
[warning] casted to bool!
5 >= 7 is true

Google

Дмитрий
08.01.2018
20:37:54
Я за explicit operator bool

Олег
08.01.2018
20:37:57

Дмитрий
08.01.2018
20:38:42
И вообще время хайповать operator <=>. Ещё никто его не реализовал?

Kirill
08.01.2018
20:39:20
но имхо стронг тайпдеф это для другого, утебя херова гора параметров, например std::function коллбеков и тебе не хочется поменять их местами, иначе наступишь на грабли в рантайме. а хотелось бы сдвинуть проверку в compiletime

Berkus
08.01.2018
20:49:59
(сейчас вот)

Дмитрий
08.01.2018
20:55:53

Berkus
08.01.2018
21:27:48

Andrei
08.01.2018
21:34:26

Дмитрий
08.01.2018
21:38:04
Код в студию.
https://github.com/LDVSOFT/spbau-term7-graphics/tree/master/hw4 . Что для сборки нужно в README написано.
Падает в Hw4Window::gl_render_marching, в данный момент я с помощью valgrind выкидываю вызовы OpenCL и смотрю на то, что остаётся. В какой-то момент явно повреждается код/данные аллокатора(без идей как ловить).

ShadoWalkeR
09.01.2018
07:36:05
Добрый день, подскажите вот такой вопрос - в extern "C" оборачиваются функции в С++, которые будут API для вещей работающих только с сишными библиотеками и насколько помню вещей добавленных в С++ там не должно быть. А как в данном случае обрабатываются шаблоны? Насколько помню они вычисляются на этапе компиляции и если я вызов засуну в блок extern "C", то в результате там должна оказаться готовая функция.

Maxim
09.01.2018
07:40:25
Привет

Alex Фэils?︙
09.01.2018
07:43:10
Шаблоны емнип будут все равно как extern "C++" линковаться

Дед Пегас
09.01.2018
07:45:36
Шаблоны разве линкуются?
Вроде как только их инстансы.

Vladislav
09.01.2018
07:46:08
конкретные инстанциации - да

Дед Пегас
09.01.2018
07:46:23
Т.е. принципиальной разницы между foo() и bar<int>() нет.

Google

ShadoWalkeR
09.01.2018
07:47:13
У меня есть одинаковый код для int и float. Чтобы не копипастить хочу шаблонную функцию написать и вызывать её в блоке extern