@ProCxx

Страница 2449 из 2477
olologin
18.10.2018
16:17:44
ну всмысле не санитайзер, но ты понял

у вас в проекте нет memory санитайзера? ну что я могу вам сказать - только посочувствовать
в gcc нет, а клангом никакие заказчики не просят собирать проект, так что лень поддерживать его совместимость

Alexander
18.10.2018
16:18:45
ок, я если честно о таком не слышал, ща почитаю
https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html

Denis
18.10.2018
16:25:28
https://godbolt.org/z/JcPI21 вот такой код почему то не собирается относительно свежим гцц (7.х). Это ведь валидное использование и в гцц просто баг был или такой юзинг и правда кривоват и остальные компилеры это правильно разруливают только потому что так выглядит логично?

Google
J
18.10.2018
16:33:11
Привет всем! Дайте, пожалуйста, рабочий пример записи в реестр Windows, а то даже не знаю, в чем проблема, гуглил, толку 0

Matwey
18.10.2018
16:33:38
https://wandbox.org/permlink/1GqYxNMw37cZLTma Господа, а почему так?

J
18.10.2018
16:34:38
и кстати, в чем может быть проблема, в реестр вроде пишется, но после перезагрузки там пусто. На C# все ок было, пробовал запускать на двух компах

вот гемор с плюсами

Alexen
18.10.2018
16:38:26
https://wandbox.org/permlink/1GqYxNMw37cZLTma Господа, а почему так?
а правила перегрузки почитать не?

Constantine
18.10.2018
16:39:49
Alexen
18.10.2018
16:40:14
я не понимаю
что именно?

Constantine
18.10.2018
16:40:50
что именно?
ну какого черта это так работает

Alexen
18.10.2018
16:41:12
потому что так работают правила

Constantine
18.10.2018
16:41:13
т.е. я понимаю, что using A::g;

но зачем - не понимаю

Alexen
18.10.2018
16:41:38
а как он тебе скажет что его а что не его?

Constantine
18.10.2018
16:41:51
в смысле?

Google
Denis
18.10.2018
16:42:09
сигнатура же разная?

Alexen
18.10.2018
16:42:12
в прямом - у тебя скоуп перегрузки текущий блок видимости

Ioann V
18.10.2018
16:42:23
а правила перегрузки почитать не?
по моему это не перегрузкой называется

а перекрытием или замещением

Alexen
18.10.2018
16:43:00
перекрытие это для одинаковых имён и одинаковых сигнатур

а для разных сигнатур и одинаковых имён именно перегрузка

если для g(int) есть видимость в текущем блоке, то для g() нет и компилятор не знает как ему дальше быть

Constantine
18.10.2018
16:44:35
перекрытие это для одинаковых имён и одинаковых сигнатур
вопрос: почему в C++ вообще введено правило name resolution, запрещающее по умолчанию разрешение C::g в A::g в случае объявления функции с именем g?

Alexen
18.10.2018
16:45:10
потому что разрешение этого случая будет в первом месте совпадения имён

сначала имена, потом сигнатуры

Constantine
18.10.2018
16:46:06
почему это не только для конструкторов и операторов правило?

что во вселенной сломается, если сделать using A::g автоматически в этом случае, g не является именем конструктора или оператора?

Nikita
18.10.2018
16:47:42
Добрый вечер всем. Ищу программиста который сделает мое домашнее задание, не за бесплатно

Constantine
18.10.2018
16:48:12
а что должно сломаться?
не знаю, это к вам вопрос

текущая версия совершенно парадоксальна

Alexen
18.10.2018
16:49:10
конструктор это такая же функция, только вызывается она не вами, также как и оператор

Constantine
18.10.2018
16:49:31
конструктор это такая же функция, только вызывается она не вами, также как и оператор
семантические особенности для конструкторов и операторов

в C++ отсутствует non-polymorphic reference

Google
Alexen
18.10.2018
16:49:57
она логична, так как это единственный способ делать поиск достижимым или нет

Constantine
18.10.2018
16:50:18
требуемое поведение есть добавление разрешенной конструкции языка

Alexen
18.10.2018
16:51:03
а почему это должно быть неявным?

это уже будет не С++

Constantine
18.10.2018
16:51:21
а почему это должно быть неявным?
а почему объявление функции с именем g скрывает все функции с именем g?

Alexen
18.10.2018
16:51:33
потому что это другой блок видимости

и другой блок поиска перегрузки

Александр
18.10.2018
16:53:48
что во вселенной сломается, если сделать using A::g автоматически в этом случае, g не является именем конструктора или оператора?
Есть популярный ответ на stackoverflow по поводу такого сокрытия: https://stackoverflow.com/a/1629074/4899740

Constantine
18.10.2018
16:55:13
Есть популярный ответ на stackoverflow по поводу такого сокрытия: https://stackoverflow.com/a/1629074/4899740
Это конечно хорошо, вот только в С++ это не реализовано совершенно

Это как раз отсутствие non-polymorphic references

потому что это другой блок видимости
хм... я не понимаю этот момент class A { public: virtual void g(int x) {} inline void g() {g(1);} }; class C: public A{ public: }; int main(){ void (C::*x)() = &C::g; //ok }

Alexen
18.10.2018
16:57:57
ну

в этом блоке нет, ищем имя в другом

Constantine
18.10.2018
16:58:12
ну
ваш name lookup противоречит составу класса

Alexen
18.10.2018
16:58:26
с чего это?

Yevhen Novytskyi
18.10.2018
16:58:30
Кто-то инжектил dll в процесс через CreateRemoteThread?

Александр
18.10.2018
16:58:31
Это конечно хорошо, вот только в С++ это не реализовано совершенно
Был вопрос "почему так", в ссылке несколько примеров, и объяснения, почему так (ссылкой на D&E Stroustrup'а).

Constantine
18.10.2018
16:58:49
с чего это?
с того, что у класса есть функция, которую name lookup не находит по вашему правилу

Google
Alexen
18.10.2018
16:59:04
почему нет?

Constantine
18.10.2018
16:59:20
потому что это... странно?

Alexen
18.10.2018
16:59:31
нет, это обычное поведение

Constantine
18.10.2018
16:59:53
нет, это обычное поведение
утвердать, что C::g() не существует, когда она существует?

Alexen
18.10.2018
17:00:05
её нет в C

Constantine
18.10.2018
17:00:12
она есть в С

Alexen
18.10.2018
17:00:13
она есть в A

Constantine
18.10.2018
17:00:15
я вам пример привел

Alexen
18.10.2018
17:00:28
вы сами понимаете как он работает?

Constantine
18.10.2018
17:00:33
а вы?

Alexen
18.10.2018
17:00:39
я понимаю

Constantine
18.10.2018
17:00:55
вы понимаете, что в этом месте точный тип функции?

Alexen
18.10.2018
17:00:57
можете посмотреть дисасемблер и убедиться в этом

да, и он берётся из A

Constantine
18.10.2018
17:01:25
дизассемблер не входит в стандарт и не часть его логики

Alexen
18.10.2018
17:01:46
зато в нём хорошо видно ошибку в вашей логике рассуждений

@webreh https://godbolt.org/z/oxygv4

Constantine
18.10.2018
17:03:37
Alexen
18.10.2018
17:03:51
иии?

где я говорил что так не будет?

Google
Alexen
18.10.2018
17:04:19
и ещё раз - сначала имя потом сигнатура

Constantine
18.10.2018
17:07:39
иии?
так, подождите, я понял, что не понимаю как это работает

Alexen
18.10.2018
17:08:18
там ещё куча есть приколов про область видимости

очень хорошо объясняется у автора ещё в третьем издании

Александр
18.10.2018
17:09:41
ну какой тип аргумента в int x[] = { 1, 2, 3 }; x[arg]
По стандарту в выржении индексирования массива другой операнд описан как "prvalue unscoped enumeration or integral type". http://eel.is/c++draft/expr.sub#1.sentence-2

Constantine
18.10.2018
17:10:50
там ещё куча есть приколов про область видимости
речь не про область видимости, указатель на функцию-член класса это пара (указатель, смещение) ?

Alexen
18.10.2018
17:11:30
речь не про область видимости, указатель на функцию-член класса это пара (указатель, смещение) ?
это тоже области видимости, любое разрешение имён это сначала область видимости и лишь затем это указатель

Constantine
18.10.2018
17:11:54
это тоже области видимости, любое разрешение имён это сначала область видимости и лишь затем это указатель
да я понимаю как получается ответ с перекрытием, я не понимаю, зачем это так

Alexen
18.10.2018
17:12:11
потому что так изначально сделали, ничего более

Constantine
18.10.2018
17:12:20
а вот что member function pointer это на самом деле пара для меня открытие

Alexen
18.10.2018
17:12:54
ну так я вот на С++ уже пять лет пишу и каждый день новое открытие

Constantine
18.10.2018
17:13:29
я больше ;)

Alexen
18.10.2018
17:14:11
сегодня узнал что полная специализация в шаблонах класса вложенных в класс не работает для гцц вообще

Constantine
18.10.2018
17:14:30
почему не инстанцируется перевызов? зачем пара?

Alexen
18.10.2018
17:14:36
то есть он даже не может такое собрать

почему не инстанцируется перевызов? зачем пара?
это вопрос к конкретной имплементации, оно так может быть другим, в зависимости от оптимизации и прочего

Constantine
18.10.2018
17:16:03
это вопрос к конкретной имплементации, оно так может быть другим, в зависимости от оптимизации и прочего
когда все согласны с одним решением, обычно есть очень серьезные причины

Alexen
18.10.2018
17:16:40
я к сожалению не очень в части компиляторов чтобы наверняка ответить на это правильно

Constantine
18.10.2018
17:20:51
https://godbolt.org/z/UXmAp7 ой какая красота

что-то не могу придумать, как легко проверить, что будет

Alexen
18.10.2018
17:23:40
какой ужас

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