|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Anatoly Moskovskyт.е. делать свой парсер строки? Ну вот не хотелось этого делать. Строковый поток отлично справляется с этими задачи, кроме одного момента про, собственно, саму строку. Сейчас пробую сделать через SFINAE. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2018, 05:24 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
такой вопрос: есть иерархия классов, для простоты: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
на самом деле это один класс-шаблон, я расписал в иерархию, чтобы было нагляднее вопрос: есть ли способ написать метод Get, чтобы оно работало, как написано выше? Чтобы возвращал значение то, которое запрашивается? Именно через возвращаемое значение. Имя должно метода должно быть одинаковое (потому что это один класс). Через шаблонный метод у меня не получилось, потому что при несовпадении типа метода-шаблона(TE) и класса шаблона(T1) компилятор ругается на несовместимость возвращаемого значения, хотя реально его никогда возвращать не будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2018, 12:51 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMb, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2018, 15:37 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_dev, интересная идея, спасибо. Я так понял, что даже без структуры Get, просто с кастами оно тоже работать будет? Но вот typedef у меня не получится применить, так как набор типов в объекте заранее неизвестен, это шаблон, на каждом объекте набор типов определяется параметрами шаблона. Но вот с кастами надо попробовать, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 05:46 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
UB ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2018, 18:41 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
можно как-то в качестве параметра шаблона использовать формулу? что-то типа Код: plaintext 1. 2. 3. 4.
А без лябмд? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 11:42 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMbможно как-то в качестве параметра шаблона использовать формулу? Можно использовать класс, в котором использовать (статическую) функцию с нужной сигнатурой. Но вот если у меня F очень плотно используется? Буквально, хочу в одном месте a+b, а в другом a-2*b, например. И таких штук 10-20, не хочется под всё классы городить, и дорого это по производительности. Ну а с лямбдами-то это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 11:45 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMbБуквально, хочу в одном месте a+b, а в другом a-2*b, например.инлайнами и опциями компилятора у меня таки это получилось ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 21:58 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
CEMbCEMbможно как-то в качестве параметра шаблона использовать формулу? Можно использовать класс, в котором использовать (статическую) функцию с нужной сигнатурой. Но вот если у меня F очень плотно используется? Буквально, хочу в одном месте a+b, а в другом a-2*b, например. И таких штук 10-20, не хочется под всё классы городить, и дорого это по производительности. Ну а с лямбдами-то это можно сделать? Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:58 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
White Owlда, отлично, даже без inline код встраивается без вызова! Жаль только что у меня проект в 2010, там лямбд нету. Отдельно порадовал оптимизатор, к примеру do_lamda(rand(), 1, ...) сводится в результате к инкременту. Ну и вообще без rand и проверки возвращаемого значения не удалось собрать, так как оптимизатор не видел смысла в этом коде, просто выкидывал его из релиза ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 06:05 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guest Код: plaintext 1.
UBИ что же тут неопределённого для LE? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 11:19 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_deva guest Код: plaintext 1.
UBИ что же тут неопределённого для LE?Что такое "LE"? Little Endian? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 11:26 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guest, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 11:58 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_dev, не понимаю, при чём тут вообще endianness. null pointer не указывает ни на какой объект, поэтому возможность получать доступ к data member-у сомнительна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 12:11 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guestrdb_dev, не понимаю, при чём тут вообще endianness. null pointer не указывает ни на какой объект, поэтому возможность получать доступ к data member-у сомнительна.А где ты видишь доступ к члену экземпляра класса по нулевому указателю? Код: plaintext 1. 2. 3. 4. 5.
Это банальный расчёт смещения члена внутри структуры экземпляра класса, чтобы инкапсулированный объект мог получить указатель на инкапсулирующий. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:10 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_deva guestrdb_dev, не понимаю, при чём тут вообще endianness. null pointer не указывает ни на какой объект, поэтому возможность получать доступ к data member-у сомнительна.А где ты видишь доступ к члену экземпляра класса по нулевому указателю?Здесь: Код: plaintext 1.
rdb_dev Код: plaintext 1. 2. 3. 4. 5.
Это банальный расчёт смещения члена внутри структуры экземпляра класса, чтобы инкапсулированный объект мог получить указатель на инкапсулирующий.Который всего лишь приводит к https://wandbox.org/permlink/uf0utxeaF4023z0u prog.cc:29:58: runtime error: member access within null pointer of type 'C' :D ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:15 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guestrdb_devпропущено... А где ты видишь доступ к члену экземпляра класса по нулевому указателю?Здесь: [src c++] ((C*)0)->GetЕще раз повторяю - в моём нет доступа к члену объекта по нулевому указателю - нет ни чтения структуры, ни вызова функции. Учите C++ ABI ! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:25 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_deva guestпропущено... Здесь: [src c++] ((C*)0)->GetЕще раз повторяю - в моём нет доступа к члену объекта по нулевому указателю - нет ни чтения структуры, ни вызова функции. Учите C++ ABI !prog.cc:29:58: runtime error: member access within null pointer of type 'C' ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:28 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
UB Код: plaintext 1.
UB Код: plaintext 1.
UB ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:35 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guest, еще и с перегрузкой операторов приведения типа не знаком? Собрать на g++ и пройтись отладчиком - не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:53 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_dev, ой-ой. Изв е ните. Оператор приведения типа же определён. Который весь сплошь из УГ UB состоит. Даже если заменить Код: plaintext 1.
на offsetof (который до C++17 для данного класса был UB, а теперь "conditionally supported") и он будет supported в данной реализации, то арифметика "указателей" там — останется UB. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 13:59 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_devСобрать на g++ и пройтись отладчиком - не судьба?Принести сюда цитат из стандарта, которые покажут, что код валиден — не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:00 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guest, еще раз - где здесь доступ к члену экземпляра класса (чтение свойства/вызов метода) по нулевому указателю экземпляра? Код: plaintext 1. 2. 3. 4. 5.
"&((C*)0)->Get" - это что? Амперсанд (взятие адреса) видим? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:03 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
a guestrdb_devСобрать на g++ и пройтись отладчиком - не судьба?Принести сюда цитат из стандарта, которые покажут, что код валиден — не судьба?Этот код валиден даже для структур чистого Си. Открывай раздел ABI стандарта и читай! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:05 |
|
Пятничная шабонная магия
|
|||
---|---|---|---|
#18+
rdb_devОткрывай раздел ABI стандарта и читай!Что-то не найду в http://eel.is/c draft/ раздел "ABI". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:48 |
|
|
start [/forum/topic.php?fid=57&msg=39624768&tid=2017587]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 156ms |
0 / 0 |