Pepe 🐸
внутри класса одно удалит дефолтный конструктор а второе нет
В первом случае дефолт конструктор удален (и ты пишешь дефолт), а во втором есть юзер дефайнед дефолт конструктор, разве нет?
Pepe 🐸
Разница видимо в том что юзер дефанед смотрит на имплементацию конструктора, а дефолтный обычный нет
Pepe 🐸
Предположение такое
Evgenii
типа class z { const struct x { int y = 3; x() = default; } }
Evgenii
у z не будет дефолтного
Aidar
class z { const struct x { int y = 3; x() = default; } xx; }
Aidar
воттак
Evgenii
class z { const struct x { int y = 3; x() {} } xx; }
Evgenii
а так будут
Pepe 🐸
типа class z { const struct x { int y = 3; x() = default; } }
Ну типа считается что нет member initializer потому что у конст структуры дефолтный конструктор. А если явно пишешь, то типа предполагается что ты об этом позаботился.
Pepe 🐸
Но хз, я просто пытаюсь понять отличается ли дефолтный от юзер дефайнед дефолтного чем то
MrSmith
Я так понимаю valgrind не лучший способ анализа программ на cpp?
MrSmith
Хочу прогнать на утечки памяти
MrSmith
Всегда это делаю перед сдачей заказчику
MrSmith
Ну вывод с него у меня есть
@ENERGY_STAFF
знаю прототип функции, знаю ее адресс void(*pfunc)(const char *) = 0x763B5A80; не работает
@ENERGY_STAFF
хочу присвоить указателю адрес и вызывать функцию
Aidar
#supapro
Денис
Ребятки, кто может помочь с переводом? Есть такая строка: The Streaming Multiprocessor now takes his big Thread Block which he received from the Gigathread Engine and separates it into smaller chunks of work. He splits the Thread Block into heaps of 32 Threads. Вопрос. Имеется в виду, что куски потом делятся на 32 потока, или все-таки Thread Block делится на куски, которые во втором предложении переименовываются в 32 потока?
Berkus
а почему он "he"?
Berkus
или это прямо живой человек?
Berkus
He splits the Thread Block into heaps of 32 Threads.
Berkus
тут написано что рубит на кучки по 32 треда
Диджитал
да, he or she звучало бы лучше
Диджитал
)
Денис
То есть, все-таки несколько кусков, каждый из которых по 32 потока?
Диджитал
нет
Диджитал
Thread Block делится на 32 куска
Денис
На 32 потока то бишь? кусок = поток в данном контексте?
Диджитал
каждый кусок помещается в свой поток
Денис
То есть, блок разбивается на 32 потока? Или блок разбивается на куски, где каждый кусок еще делится на 32 потока? То есть, 1 TB = 21 Chunks = 21*32 Threads?
Денис
Ок, спеасибо. Хотя смысла в этом не больше, чем в первом варианте
Berkus
ну там вообще дока коряво написана - похоже на неумелый перевод с русского на английский
Диджитал
это не дока, это кусок объяснения работы графического процессора на "детском" языке
Диджитал
https://simonschreibt.de/category/gat/page/16/
Aidar
threads это нвидия чтоль писала
Aidar
и core
Aidar
точно нвидия
Aidar
блин SM это ваще куда какаято
Aidar
а pixel shader это d3d
Денис
https://simonschreibt.de/category/gat/page/16/
Поисковик не подвел, нынче, да? =)
Aidar
я перерепостил своим детишкам
Aidar
спасибо
Alignant
Народ, кто-нибудь знает как в qt реализовать функционал радиокнопок используя вместо них изображения? Ну то есть три картинки. Выделяешь одну - меняешь режим.
Dmitrii
@qt_chat
Berkus
в QML можно просто свой стиль напихать
Berkus
Можно даже наверное QStyleSheet
я не уверен что в qwidget версии оно делается сейчас картинками - но если да, то через qss
Dug
Всем привет! Ребята, порекомендуйте пожалуйста книгу по С++. Опыт программирования имеется. Java 1.5+ года.
Anonymous
Прата, Страуструп, Липпман
Dug
Что-нибудь не из совсем начального уровня, но и не для профессионалов
Danil
@supapro
Dug
Ага, спасибо
Evgenii
The Development of the C Language (Score: 101+) Link: http://j.mp/2eHWEQD
Constantine
Господа, а можете подкинуть идей синтаксиса. Я в очередной раз воткнулся и прямо таки созрел писать пропозал о forward class definition для Derived, указывающий, что Derived& ковариантен Base&
Danil
т.е. за форвард декларить класс и указать его предков сразу?
Constantine
нет, только указать ковариантность некоторому
Aidar
может реально просто : .......
Constantine
Собственно причины две: struct Base; struct Derived /*правильная декларация невозможна*/; void foo(Base * object); struct Interface { virtual Base * query() = 0; }; struct Implementation : Interface { virtual Derived * query() override; //ошибка компиляции: невозможно указать, что Derived* ковариантен Base* }; void foo2(Derived * object) { foo(object); //ошибка компиляции: невозможно указать, что Derived* ковариантен Base* } struct Base {}; struct Derived : Base {};
Aidar
ну как базовые
Aidar
но типа можно не все базовые
Constantine
там нужно ограничивать декларацию одним предком
Aidar
почему
Constantine
потому что предок может быть incomplete type
Constantine
и невозможно синтезировать typecast
Constantine
в данном случае нужно требование даже более сильное, чем ковариантность
Constantine
по сути нужно указать, что QueryInterface выполняется без смещения
Ioann_
Это ты типа хочешь виртуальность разную в разных классах ? В том плане, что у der есть свои которых нету в base ?
Matwey
в этом есть какая-то глубокая мысль
Constantine
нет, я хочу, чтобы примеры выше скомпилировались
Constantine
потому что либо нельзя использовать incomplete type, либо в первом примере нужно вводить дополнительную виртуальную функцию, а во втором - дополнительную перегрузку для foo