@ProCxx

Страница 2443 из 2477
Александр
17.10.2018
09:35:12
Т.е. если есть UB, о каких-то последствиях рассуждать бессмысленно

Alexey
17.10.2018
09:35:24
и?
ну, техника-то такая же, получается, в стеке все плотненько лежит упаковано, без мусора ))

Alexey
17.10.2018
09:36:15
т.е. в случае не абстрактного компилера, а вполне конкретного, можно ли полагаться что он именно так переменные расположит, а не иначе

Google
Constantine
17.10.2018
09:36:19
вот хороший вопрос, UB в данном случае имеет ли негативные последствия?
ээээ а на массивы распространяется правило про эквивалентность одноэлементного массива и переменной?

n00b
17.10.2018
09:38:23
Господа, а что-нибудь слышно про P0024R2?

Александр
17.10.2018
09:40:32
т.е. в случае не абстрактного компилера, а вполне конкретного, можно ли полагаться что он именно так переменные расположит, а не иначе
Полагаться нельзя. (см. пример: https://godbolt.org/z/NtF1_1) Разадресация элемента следующего за последним элементом массива - это UB, и компилятор может этим знанием воспользоваться.

Igor
17.10.2018
09:40:54
MSVC не компилирует
ах а под гцц не сталкивались?

Anatoly
17.10.2018
09:41:26
ах а под гцц не сталкивались?
гцц решил пойти по другому пути, вычислить правильный адрес параметра, не смотря на UB

Александр
17.10.2018
09:42:52
ээээ а на массивы распространяется правило про эквивалентность одноэлементного массива и переменной?
Распространяется, но разадресовывать элемент массива (того эквивалентного) всё равно нельзя

Anatoly
17.10.2018
09:44:29
Распространяется, но разадресовывать элемент массива (того эквивалентного) всё равно нельзя
разадресация с автоматическим приведением к адресу на первый элемент.

Constantine
17.10.2018
09:44:46
забавно... https://godbolt.org/z/Cqy-sx

A.D.
17.10.2018
09:45:57
Constantine
17.10.2018
09:47:18
забавно... https://godbolt.org/z/Cqy-sx
забавно, в форме "((int*)*(&arr + 1) - (int*)arr)" MSVC тоже не скомпилирует

Google
Spoonson
17.10.2018
09:48:13
а в случае с int arr[] = {1, 2, 3} имеет ли компилятор право вообще положить сами константы где-то в другом месте, а на стеке оставить только собственно только указатель на сам массив?

потому что мне кажется, это решение исходит из предположения что arr == &arr что для меня не очевидно https://wandbox.org/permlink/4ayhDhIy7lOGs3P0 , однако выполняется на практике

Роман
17.10.2018
10:04:03
кто знает как в listbox сделать CUEBANNER ?

Igor
17.10.2018
10:20:14
кто знает как в listbox сделать CUEBANNER ?
с помощью listbox->addElement(new Widget(CUEBANNER))

какой язык? какой фреймворк? тут всё как на форумах, телепаты вечно в отпусках

Роман
17.10.2018
10:21:32
С++

Builder

Yarique
17.10.2018
10:21:44
в MSVC 1? )
https://wandbox.org/permlink/T0B7OCZAW8wAjPtN А такой код даже на msvc 3 выдвёт

Constexpr переменные не на стеке хранятся поэтому msvc 1 выдавал

Александр
17.10.2018
10:34:39
разадресация с автоматическим приведением к адресу на первый элемент.
Отвлекли, и я отправил не проверив. Разадресовывать указатель на элемент массива, следующий за последним, нельзя. Как в случае того самого эквивалентного, так и для обычного.

Дмитрий
17.10.2018
10:39:52
Так, а какая логика в C++ за запретом каста T(*)[N] к T(*)[]?

Anatoly
17.10.2018
10:44:18
Дмитрий
17.10.2018
10:45:30
потеря размерности
Ну в плане? Я потерял внешний размер, и? Если я этого хотел?

static_cast писать?

Александр
17.10.2018
10:52:02
Constexpr переменные не на стеке хранятся поэтому msvc 1 выдавал
Причём здесь то, где хранится constexpr, если сам массив там не constexpr? Адрессная арифметика в constexpr должна работать (правда ещё не везде нормально работает - gcc слишком много лишнего позволяет, например). Иначе как string_view в constexpr использовать и прочее?

Google
Spoonson
17.10.2018
10:53:12
компилятор имеет право не создавать переменную ни в каком смысле
адрес то ему надо откуда-то взять, и даже если самой переменной нет, то адрес ему надо сымитировать, если мы его выводим. И это имитация должна руководствоваться правилами, будто переменная есть

Александр
17.10.2018
10:57:05
Ну тогда выходит бага в MSVC? Не работает арифметика указателей в constexpr
В том примере UB, поэтому это не баг. Можно посмотреть на сообщение от Clang.

Spoonson
17.10.2018
11:01:23
и кажется arr == &arr действительно выполняется всегда, потому что если массив это указатель на первый элемент массива, то указатель на массив это указатель на область памяти, которую занимает массив, а это область должна начинаться с первого элемента массива, потому что размер массива это размер массива * на размер элемента массива (http://eel.is/c++draft/expr.sizeof#2), т.е. паддингов там быть не может

Constantine
17.10.2018
11:09:09
вижак вот замечательно оптимизировал статическую переменную функции с LifeCycle { static int x = 0; /*...*/ x = something; /*...*/ x =0; }

Spoonson
17.10.2018
11:11:44
это верно, но от этого переменная не должна быть
я согласен с этим, однако мне было бы интересно посмотреть реальный пример, когда при использовании адреса переменной компилятор бы просто запихнул в код константу

(константу адреса)

Alexander
17.10.2018
12:42:34
http://llvm.org/foundation/relicensing/

Evgeniy
17.10.2018
12:44:11
http://llvm.org/foundation/relicensing/
> To ensure that all contributors have agreed to the terms of the new developer policy, we will recind commit access from all contributors who are not covered by a corporate or individual agreement at that point. Серьезно блять?

Igor
17.10.2018
12:58:51
чо там, опять какие-то зашкварные CoC расщемляющие ущемленных и ставящие палки в колеса нормальным разработчикам, или просто рядовое бурление бюрократии?

Igor
17.10.2018
12:59:26
показалось

Alexander
17.10.2018
12:59:40
*прячу банхаммер за спину*

Igor
17.10.2018
13:02:32
просто в последнее время я уже столько фейспалма излил на новости в духе "после принятия нового СоС, лоббирующего права меньшинств, из самой популярной опенсурсины в мире изгнали ведущего разработчика за практику бдсм на закрытых тематических бдсм-форумах", что на любую лицензиарщину уши дёргаются (

собственно вопрос, в чём бомба новости про LLVM то?

A.D.
17.10.2018
13:08:44
*прячу банхаммер за спину*
т.е. master/slave в этом чате употреблять нельзя?

Google
Spoonson
17.10.2018
13:09:28
эх сейчас бы кок чата

Alex Фэils?︙
17.10.2018
13:26:38
давайте чутка почистим чат от оффтопа, д

я кстати придумал себе CoC для проектов, надо дооформить и втащить везде

начинается он We discriminate people on 3 factors...

если первое, то вот draft http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf
о, не запароленный. В прошлом году была запароленная пдфка на сайте

https://cmake.org/cmake/help/v3.13/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.html
ага) теперь дядя Нёвер может собирать дотнет смаком (надо, правда, новое свойство указывать)

Igor
17.10.2018
13:35:35
дык sscanf и парсит строчку как fscanf FILE
соль была в не-сразу-очевидном buf == &buf для массива на стеке

Alex Фэils?︙
17.10.2018
13:35:51
а, да, это годная тема, да

Spoonson
17.10.2018
13:36:37
соль была в не-сразу-очевидном buf == &buf для массива на стеке
почему именно на стеке? скорее для любого массива

Igor
17.10.2018
13:38:30
...гм а ведь и вправду, для любого массива который a[] а не *a = new[] почему-то вначале подумал, что с глобальными не прокатит

Аттрибутивно-ассоциативный ряд
17.10.2018
14:25:21
что произойдет если C-функция вызовет C++ функцию которая кидает эксепшн?

Alex Фэils?︙
17.10.2018
14:27:24
что-то произойдет, зависит от компилятора, его настроек сборки ,исключений и рантайма

Alexey
17.10.2018
14:32:41
Ничего хорошего

Аттрибутивно-ассоциативный ряд
17.10.2018
14:36:32
подскажите где почитать

Страница 2443 из 2477