Re[3]: Хотите оценок?
От: gegMOPO4  
Дата: 04.04.11 09:38
Оценка: :)
Здравствуйте, night beast, Вы писали:
NB>зря ты так. ну тренируется человек, кому от этого плохо?

Это не я, он сам пришёл.

Код, на самом деле, настолько уныл и безграмотен, что даже на говнокоде не получил хорошей оценки.
Re[7]: Tuple для C++. Хотим оценок.
От: night beast СССР  
Дата: 04.04.11 09:42
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Здравствуйте, night beast, Вы писали:


NB>>Здравствуйте, MikelSV, Вы писали:


NB>>не вижу, чем (TPL a + b + c) принципиально лучше чем MAKE_TPL(a,b,c)

NB>>
NB>>#define MAKE_TPL(...) ( Tuple(),__VA_ARGS__ )
NB>>


NB>>PS: TPL 5 работает? а на g++?


MSV>Да, не подумал. На g++ тоже работает.


а так:
#define TPL Tuple() +

class Tuple{
public:
    template <class T>
    Tuple& operator+(T &t){ return *this; }
};


int main(){
    TPL 5;
    return 0;
}
Re[8]: Tuple для C++. Хотим оценок.
От: MikelSV http://www.centerix.ru
Дата: 04.04.11 10:38
Оценка:
Здравствуйте, night beast, Вы писали:

Над TPL 5 с утра думаю.
Для чисел не подходит T &t; добавил operator+(Tuple& tl, T &t); изменил operator+(T t).
Оператор для 2 переменных вызывается первым и берет переменные, второй оператор подбирает числа.
Проблема в Tuple() + 5, здесь еще нет Tuple& и страбатывает T t, получение данных у первой переменной накрывается.
Буду думать, как выкручиваться.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re[3]: Tuple для C++. Хотим оценок.
От: LaptevVV Россия  
Дата: 04.04.11 10:58
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Код компилируется, в MSVS и g++, и мне кажется стандарт не против. на codepad.org он работать не захотел, похоже там стоит флаг считать все предупреждения ошибками. удалил char data[0]; заменил все d.data на (&d+1). предупреждение пропало. codepad.org нашел что-то еще. Там походу другой компилятор, надо поставить себе, разобраться, что он хочет.

Проставьте в свойствах проекта запроет на использование расширений. И MSVS, и g++ поддерживают проверку на соответствие стандарту.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[8]: Tuple для C++. Хотим оценок.
От: Ops Россия  
Дата: 04.04.11 12:38
Оценка:
Здравствуйте, night beast, Вы писали:

NB>Здравствуйте, jyuyjiyuijyu, Вы писали:


NB>>>как получить в С++ такого же эффекта я не знаю (на самом деле оно в нем и не нужно)


J>>студия (msvc2008) нормально компилит

J>>и в Си и в Си++ режиме
J>>такой код
J>>
J>>struct ___
J>>{
J>>    int _;
J>>    char __[];
J>>};
J>>


NB>гсс 3.4.2 отказывается.


http://msdn.microsoft.com/ru-ru/library/b6fae073%28v=VS.71%29.aspx
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[9]: Tuple для C++. Хотим оценок.
От: night beast СССР  
Дата: 04.04.11 12:41
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Над TPL 5 с утра думаю.

MSV>Для чисел не подходит T &t; добавил operator+(Tuple& tl, T &t); изменил operator+(T t).
MSV>Оператор для 2 переменных вызывается первым и берет переменные, второй оператор подбирает числа.
MSV>Проблема в Tuple() + 5, здесь еще нет Tuple& и страбатывает T t, получение данных у первой переменной накрывается.
MSV>Буду думать, как выкручиваться.

почитай про rvalue.
в твоем случае достаточно добавить operator +( T const & t ); (будет два оператора+).
для функций с несколькими параметрами это не-помогло бы, поэтому в таких случаях обычно применяют функцию cref, которая переводит rvalue в const &.
в новом стандарте проблему решили.
Re[4]: Хотите оценок?
От: blackhearted Украина  
Дата: 04.04.11 13:58
Оценка: :)
Здравствуйте, gegMOPO4, Вы писали:

MOP>Здравствуйте, night beast, Вы писали:

NB>>зря ты так. ну тренируется человек, кому от этого плохо?

MOP>Это не я, он сам пришёл.


MOP>Код, на самом деле, настолько уныл и безграмотен, что даже на говнокоде не получил хорошей оценки.


покажи, какой плюсовый код получил хорошую оценку там, мы вместе посмеёмся.
Re[5]: Хотите оценок?
От: gegMOPO4  
Дата: 04.04.11 15:13
Оценка:
Здравствуйте, blackhearted, Вы писали:
B>покажи, какой плюсовый код получил хорошую оценку там, мы вместе посмеёмся.

Из недавнего:
http://govnokod.ru/6126
http://govnokod.ru/6119
http://govnokod.ru/6068
http://govnokod.ru/5970
http://govnokod.ru/5957

Ну и т.д. Большинство говнокода интернационально, но иногда бывают и чисто плюсовые перлы.
Re[10]: Tuple для C++. Хотим оценок.
От: MikelSV http://www.centerix.ru
Дата: 04.04.11 17:12
Оценка:
Здравствуйте, night beast, Вы писали:

NB>почитай про rvalue.

NB>в твоем случае достаточно добавить operator +( T const & t ); (будет два оператора+).
NB>для функций с несколькими параметрами это не-помогло бы, поэтому в таких случаях обычно применяют функцию cref, которая переводит rvalue в const &.
NB>в новом стандарте проблему решили.

Да, я разобрался. Я пытался делать это через оператор + вне класса. А оказывается не хватало константного. Числа работают. В g++ тоже.
Увидел новые возможности применения: как контейнер для сообщений. Так как выделяется один блок памяти, его можно даже пересылать по сети и поочереди извлекать значения.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re[11]: Tuple для C++. Хотим оценок.
От: night beast СССР  
Дата: 04.04.11 17:27
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Увидел новые возможности применения: как контейнер для сообщений. Так как выделяется один блок памяти, его можно даже пересылать по сети и поочереди извлекать значения.


я бы не советовал.
ключевое слово: сериализация.
ну и порядок байт/размер чисел на разных машинах может быть разный (хотя судя по mcrc это тебя не сильно волнует )
Re: Tuple для C++. Хотим оценок.
От: rm822 Россия  
Дата: 05.04.11 06:56
Оценка: :)))
http://msdn.microsoft.com/ru-ru/library/bb983001.aspx

____________$$$$$$$
___________$$___________$$$$$$$$
___________$______________$$
___________$$$$$$$$$$$$$$$$$$
___________$$$$___________$_$$
___________$__$$_________$___$
____$$$$$$$$$__$________$___$$$$$$$$$
__$$$$____$$$$__$______$__$$$_$_____$$
_$$$______$$_$$__$____$__$$___$$_____$$$
$$______$$$___$$__$$$$$__$$____$$_____$$$
$$_____$$$_____$__$$___$$$$$$$$$$$$____$$
$$_____$$_____$$__$$$$$$$$$____$$$_____$$
_$$___________$$_________$$___________$$
__$$_________$$___________$$$_______$$$
____$$$$$$$$$_______________$$$$$$$$$
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Помогите советом по ipad2
От: enji  
Дата: 05.04.11 17:47
Оценка: +1
Здравствуйте, MikelSV, Вы писали:

MSV>[ccode]


Макросы — это очень опасная штука, которую стоит использовать, только если без них получается совсем плохо

MSV>#define TPLM Tuple(TPLMOVE) +

MSV>#define TPLC Tuple(TPLCOPY) +
MSV>#define TPL Tuple() +
Без этих трех вполне можно обойтись — они немного сокращают кол-во символов, зато убивают читабельность

MSV>#define TPLERROR(t) { memcpy(0, 0, 1); }

Этот макрос вы используете только в этом файле — сделайте #undef TPLERROR в конце, раз уж он вам так необходим
вместо memcpy(0,0,1) лучше assert или throw

MSV>#define TPLMOVE 1 // copy to tuple, memset 0 original. = destruct dest, copy to dest.

MSV>#define TPLCOPY 2 // copy constructor = destruct dest, copy to dest
MSV>#define TPLGET 3 // destruct all values

enum {TPLMOVE, TPLCOPY, TPLGET};
делает тоже самое, но намного безопасней

MSV>#define max(a, b) (((a) > (b)) ? (a) : (b))

MSV>#define min(a, b) (((a) < (b)) ? (a) : (b))
есть функции std::min и std::max

MSV>unsigned int mcrc(char* name, unsigned int sz){

...
MSV>return ret;
MSV>}
стоит использовать человеко-читаемые имена функций

MSV>struct Tupled{ unsigned int sz, type; void *v; char data[0]; };


MSV>class Tuple{

MSV> int count, set, dusz, dasz;
MSV> unsigned char *data;
MSV> int type; int adel;

стоит использовать человеко-читаемые имена членов

MSV> template <class T>

MSV> Tuple& operator+(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }
...
MSV> template <class T>
MSV> Tuple& operator <(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }

Не стоит давать много способов сделать одно и тоже, это только запутывает

Выше вам уже говорили про выравнивание и про то что многие классы нельзя копировать через memcpy

И самое главное — хочется динамический тупл — возьмите std::vector<boost::any>
Re[2]: Злобное автозаполнение форм :)
От: enji  
Дата: 07.04.11 17:20
Оценка:
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.