Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Хочу следующее: если размер значения входит в указатель, то сохранить его в указатель void*, если большой, то выделить память и сохранять туда. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Так компилируется Код: plaintext 1. 2. 3. 4. А так нет Код: plaintext 1. 2. 3. 4. error C2440: 'type cast' : cannot convert from 'double' to 'void *' На красной строчке, но она никогда не выполнится. Может как-то можно по другому обойти? MS VC 2008 В иделе хочется как-то препроцессор задействовать, чтобы лишнего if`а не стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 14:31 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:07 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:11 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
mayton, там шаблон f(), если использовать первый main() - компилируется, второй - нет. Как обойти не знаю, может есть какой синтаксис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:11 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
А. Понял. Я не туда смотрел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:12 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
присвоение j ни при чем, так компилируется Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:15 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima T, а так, если: Код: 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. не компилял, есичё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:26 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Если цель - просто чтобы скомпилировалось, то можно влепить Код: plaintext 1. и сделать вид будто так и надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:26 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima TМожет как-то можно по другому обойти? Не мелочись: Код: sql 1. 2. 3. 4. 5. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:27 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
egorych, не взлетело Код: plaintext 1. error C2059: syntax error : 'constant' wst, помогло. Но допилить бы вариант egorych ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:53 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima Tegorych, не взлетелочастичная специализация шаблона функции запрещена, по моему, надо в структуру переделать, ща сделаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:54 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, это передача инфы другому трэду: указатель в queue<void*>, в другом трэде из очереди и вызов callback функции с параметрами. По хорошему хотел чтобы и все было шаблонами, но на первом шаге (добавление в очередь) уже мозг сломал шаблонами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 15:59 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima TПо хорошему хотел чтобы и все было шаблонами Тогда, раз уж встал на порочный путь шаблонов, отказывайся от void* и делай очередь из шаблонных классов-обёрток. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:11 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
По идее компилятор должен вообще выкинуть эту строчку вместе с if() т.к. для double будет Код: plaintext 1. 2. 3. 4. 5. Хотя может и выкинет, но ситаксис раньше проверяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:13 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TПо хорошему хотел чтобы и все было шаблонами Тогда, раз уж встал на порочный путь шаблонов, отказывайся от void* и делай очередь из шаблонных классов-обёрток. Попытался встать но не устоял. Как-то меня этот путь уже все меньше и меньше привлекает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:14 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
egorych, Частичные специализации функций не разрешены. Ну и синтаксис немного другой, если бы были разрешены )) Так что наверно самый простой вариант тот что предложил wst. Надо будет только игнорировать предупреждения компилятора. А вообще, рекомендую Dima T отказаться от этой затеи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:19 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima TПо идее компилятор должен вообще выкинуть эту строчку Хотя может и выкинет, но ситаксис раньше проверяется. По стандарту ошибки надо выдавать как если бы никакой оптимизации не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:20 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Всегда знал, что Страуструп был извращенец. Есть такой термин - анальный секс. Вот с его помощью, через то самое место, то есть жопу и делается. Пример кода методом компиляции кучи кусков из google приведен. Пиво высылать в СПб (я люблю Туборг). Можно высылать деньги до востребования в бар Рок-Паб на Невском (в переводе написать "для любителей Rammstein") IMHO & AFAIK Ссылки в гугле: http://stackoverflow.com/questions/1416345/c-template-specialization мораль - Function templates cannot be partially specialised, only fully ((( http://bytes.com/topic/c/answers/527597-template-function-specialization-inside-template-class-possible мораль - приведен пример с классом proxy. Еще пару литров алкоголя и можно допилить напильником // ConsoleApplication2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <malloc.h> void* ptr = NULL; bool is_ptr = false; // Из-за C2141 через жопу class proxy { public: template<typename T> static void f(T t) { printf("proxy\n"); } }; template <typename T> class A { public: template <bool is_inline > static void f(T x); template <> static void f<true>(T x) { printf( "true store_in_ponter sizeof(x)=%i\n", sizeof(x) ); ptr = (void*)x; is_ptr = false; } template <> static void f<false>(T x) { printf( "false store_in_heap sizeof(x)=%i \n", sizeof(x) ); ptr = malloc( sizeof(T) ); if(ptr) { is_ptr = true; memcpy(ptr, &x, sizeof(T)); } } }; template< typename T > void f(T& x) { A<T>::f< sizeof(T) <= sizeof(void*) >( x ); } int _tmain(int argc, _TCHAR* argv[]) { int i = 1; f(i); double d = 2; f(d); getchar(); return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:25 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Тег SRC забыл: Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:28 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЧастичные специализации функций не разрешены. Ну и что? ))) подумаешь, не разрешены ))) Через proxy класс вполне можно и даже, по результату, код вполне читабельно-понятный. Но вот написать.... б.... матных слов в русском языке не хватает Кто такое придумал, с ним не анальным сексом, а минимум фиггинг'ом заниматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:37 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Собственно класс proxy нафиг не нужен. Достаточно только класса A ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:41 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Dima Tдопилить бы вариант egorych Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:51 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyegorych, Частичные специализации функций не разрешены. Ну и синтаксис немного другой, если бы были разрешены ))шаблонный синтаксис, пока его вспомнишь, как правильно, семь потов сойдёт ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:53 |
|
||
|
Помогите победить изврат с шаблонами
|
|||
|---|---|---|---|
|
#18+
Вариант wst победил по количеству символов. Лишний код выкинул компилятор, поэтому в плане производительности никакой разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 16:56 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=49&tid=2019069]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 142ms |

| 0 / 0 |
