
Александр
20.09.2018
12:07:09
Таки какое именно значение лежит по адресу, который хранится в x и p?
Там в программе UB, т.к. стандарт не гарантирует относительное расположение в памяти последовательных выделений памяти. Если использовать в арифметике именно вычисленный diff, на сколько я помню, всё должно работать.
Например:
С оптимизацией (-O3) с оригинальным кодом - https://wandbox.org/permlink/aLDF4FgHbdZFMg56 (всё плохо)
С оптимизацией (-O3) используя вычисленный diff - https://wandbox.org/permlink/7YGKs20usuK5ABMR (всё хорошо)
Есть и более простой пример: https://wandbox.org/permlink/uaZ7r7Rg1rKBLMmz

Anton
20.09.2018
12:19:33

Matwey
20.09.2018
13:06:23
А как так получается, что все говорят что пользуются ubuntu, а нового boost для 14.04 LTS нигде нету?

Andrey
20.09.2018
13:06:43
Можно же собрать наверное

Google

Konstantin
20.09.2018
13:07:16
14.04 это же сильно старая, щас вроде 18.04 актуальная

A.D.
20.09.2018
13:07:52

Matwey
20.09.2018
13:07:55

Nikita
20.09.2018
13:08:08

Igor
20.09.2018
13:08:59

Matwey
20.09.2018
13:10:01
Ну можно же в backports положить

Igor
20.09.2018
13:11:26
а что, и из PPA какого-нибудь стянуть нельзя? мне казалось это самая живейшая альтернатива rolling release под дебианоподобные дистры

Vitaly
20.09.2018
13:11:37

Matwey
20.09.2018
13:12:03

Konstantin
20.09.2018
13:12:16
как варианты: https://launchpad.net/~dluxen/+archive/ubuntu/boost http://www.linuxfromscratch.org/blfs/view/svn/general/boost.html

Vitaly
20.09.2018
13:12:25

Matwey
20.09.2018
13:12:44
бусты

Google

Pavel
20.09.2018
13:36:35
Кто нибудь знает хоть кого нибудь кто разбирал LLVM, умеет добавлять intrinsic'и и новые инструкции?
Мб есть чаты какие-то
как вообще найти человека хоть как то шарящего за компиляторы?

Pavel
20.09.2018
13:43:54

Igor
20.09.2018
13:44:04

Anton
20.09.2018
13:46:06
в мейллисте там быстро отвечают
обычно

Pavel
20.09.2018
13:46:48

Anton
20.09.2018
13:48:00
новые версии llvm поддерживают avx и вот это всё
иногда правда дичь генерят, но всё же
а если сам хочешь, то может ассемблерную вставку сделать проще?

Pavel
20.09.2018
13:50:57
да у меня таска такая
типа нужно описать новую инструкцию + добавить на нее intrinsic
Я как бы читаю доки, но .td и вот это вот все не понимаю))

Pavel
20.09.2018
13:53:02
Странная таска

Pavel
20.09.2018
13:53:40
я до этого никогда не встречался с LLVM, а дали на это 10 дней)))

Matwey
20.09.2018
13:54:18
за 10 дней можно успеть добежать до Канадской границы

A.D.
20.09.2018
13:54:27

Pavel
20.09.2018
13:54:52
ну это не университетская таска
но она какая то хардкорная

Google

Konstantin
20.09.2018
13:56:05
ну вот тебе пример, делай так же https://gitlab.crest.iu.edu/lvoufo/conceptclang/commit/463eb89d5e36b05d74c14b937384076d745b3b84?view=parallel

Eugene
20.09.2018
14:46:43
Народ, а есть ли какой-нибудь способ путь dll-ки/so-шки функцией в самой библиотеке?
Я знаю, что это можно сделать через dladdr, но там нужен handle
А как его узнать?
Идеально было бы boost::shared_library(const shared_library & lib), но где получить эту ссылку?

Евгений
20.09.2018
14:51:08
Подскажите кто шарит, что происходит, когда делаешь так?
std::unique_ptr<Base> base = std::make_unique<Base> ();
std::unique_ptr<Derived> der = std::make_unique<Derived> ();
*base = *der
Какие траблы потенциально возможны?

Anatoly
20.09.2018
14:52:23

Феменистка
20.09.2018
15:03:01
супер срочный вопрос
мега
тут есть люди которые программируют микроконтроллеры ?

Blini
20.09.2018
15:04:13

Alexander
20.09.2018
15:04:23

Феменистка
20.09.2018
15:04:47

Alexander
20.09.2018
15:05:27
Нет.

Феменистка
20.09.2018
15:05:50
плохо, очень мало в инете информации
китайцы понаделают а потом нельзя сделать

Aleksandr
20.09.2018
15:20:36
привет. есть идеи, почему этот код не собирается?
#include <initializer_list>
enum My
{
A, B
};
int main()
{
constexpr auto l = { A, B };
return 0;
}
# compile main.cpp.o
main.cpp:10:20: error: constexpr variable 'l' must be initialized by a constant expression
constexpr auto l = { A, B };
^ ~~~~~~~~
main.cpp:10:20: note: pointer to subobject of temporary is not a constant expression
main.cpp:10:24: note: temporary created here
constexpr auto l = { A, B };
^
1 error generated.

Igor
20.09.2018
15:23:12

Aleksandr
20.09.2018
15:24:34

Google

Igor
20.09.2018
15:25:28
http://clang-developers.42468.n3.nabble.com/C-11-constexpr-and-initializer-list-td4031078.html

Anton
20.09.2018
15:27:29
а какой тип должен вывестись у l? массив?
const int [] ?

Igor
20.09.2018
15:28:14
std::initializer_list<int> или <My>

Anton
20.09.2018
15:28:43
думаю, что My тут вообще не при чём, из него значения только берутся
а intializer_list разве не может быть только справа?

Igor
20.09.2018
15:31:03
не обязательно, std::initializer_list<int> l = {A, B} гцц тоже прекрасно компилирует, а кланг также прекрасно ругается

Aleksandr
20.09.2018
15:31:17
заменив constexpr на const всё без проблем работает, выводится std::initializer_list<My>

Anton
20.09.2018
15:32:17
похоже на баг )
enum кстати тоже не нужен

Igor
20.09.2018
15:32:50
https://bugs.llvm.org/show_bug.cgi?id=15117 ну баг и есть

Anton
20.09.2018
15:32:54
можно {1, 2} написать

Aleksandr
20.09.2018
15:33:25
так написано же RESOLVED FIXED

Anton
20.09.2018
15:33:29
гыгы

Igor
20.09.2018
15:33:31
вот это тоже сбивает столку

Aleksandr
20.09.2018
15:33:34
2013-й год

Anton
20.09.2018
15:35:05
сначала пофиксили, потом опять сломали )
либо Richard Smith был очень бухой, когда проверял этот баг через полгодика
ему же просто показалось, что он пофикшен - вот и закрыл
можно посмотреть, что там в этой ревизии закоммичено и что сейчас

Google

Igor
20.09.2018
15:37:19
@antoshkka https://godbolt.org/z/sd7hp8 а кто прав в этом споре?

Anton
20.09.2018
15:38:46
по-моему clang не понимает, что std::initializer_list<My> и std::initializer_list<int> - одно и то же
если это не undefined behavior опять же

Igor
20.09.2018
15:39:24
ну, гцц тогда вообще ничего не понимает, получается

Anton
20.09.2018
15:40:01
о, чот я спутал единицы с нулями )
ага

Дмитрий
20.09.2018
15:43:58

Stanislav
20.09.2018
15:45:50

Aleksandr
20.09.2018
15:46:34
http://eel.is/c++draft/dcl.init.list
5. An object of type std::initializer_list<E> is constructed from an initializer list as if the implementation generated and materialized ([conv.rval]) a prvalue of type “array of N const E”, where N is the number of elements in the initializer list.
Each element of that array is copy-initialized with the corresponding element of the initializer list, and the std::initializer_list<E> object is constructed to refer to that array.
отсюда видимо и
main.cpp:10:20: note: pointer to subobject of temporary is not a constant expression
main.cpp:10:24: note: temporary created here
constexpr auto l = { 1, 2 }
зачем тогда std::initializer-list-у constexpr begin мне не ясно)

Igor
20.09.2018
15:49:53
ну просто цитируя мейлинглист,
This was not legal when C++11 was published, but since then, the library folks have made std::initializer_list<T> a literal type, which makes this code legal.

Evgeniy
20.09.2018
15:52:24

Igor
20.09.2018
15:52:29
я не вижу, как процитированный пункт мешает созданию инитлиста