Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новый C++ - что вы от него хотите, пожелания и замечания для C++0x 
:(
    Опции темы
mr.Anderson
Дата 7.11.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Я скажу что-нить маленькое, но я думаю полезное. Очень бы хотелось, чтобы можно было создавать массивы как в PHP. То есть чтобы индексом было, например, выражение. Типа: 
Код

int b = 3;
int arr[ 25+1-b ];

И еще. Чтобы не было заморочек с типами. В РНР это прекрасно работает. То есть РНР сам определяет тип - строковый, символьный, числовой и т.д. Оч удобно. То есть я могу спокойно написать:
Код

$num = 123;
$str = " поросёнка.";

$ans = $num + $str; //получим переменную строкового типа с содержанием "123 поросенка".

Очень удобно было бы без типов, я думаю.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
sergejzr
Дата 7.11.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



sim7, неее, делать из С++ ПХП не надо. То, что тебе надо std:map, как правильно мне посоветовали smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Djuffin
Дата 8.11.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 18.3.2005

Репутация: 1
Всего: 2



Цитата(sim7 @  7.11.2006,  18:23 Найти цитируемый пост)
int arr[ 25+1-b ];

Код

int *array = new int[25+1-b];



Цитата(sim7 @  7.11.2006,  18:23 Найти цитируемый пост)
Очень удобно было бы без типов, я думаю.

:нервный смех:

Да что ты говоришь? Я думаю с такими предпочтениями тебе стоит изучить Ruby.



PM MAIL   Вверх
nickless
Дата 8.11.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Цитата(Любитель @ 7.11.2006,  16:57)
С точки зрения C++ (и моей тоже) подобное поведение будет нелогично. Если нужно - создай абстрактный базовый класс, не забывай про множественное наследование. Это гораздо практичнее.

Это не всегда возможно/удобно, например нельзя написать отдельно скажем класс капсулирующий работу с каким-нибудь алгоритмом шифрования, добавить к нему прогресс ивент и использовать везде и всюду без общего для всех проектов абстрактного класса.

Цитата(Любитель @ 7.11.2006,  16:57)
Насчёт дельфийских ивентов - с системой сигнал/слотов они и близко не лежали. Вспомни, хотя бы, что слотов можно законектить несколько на один сигнал. В Дельфи (насколько я знаю) такого невозможно по определению (архитектура такая). И ещё - советую посмотреть в сторону Boost.Signal (сигнал/слоты, реализованные с помощью языковых возможностей). Достаточно перспективно.

Не обязательно копировать ивенты дельфи, надо сделать лучше  smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
UnrealMan
Дата 9.11.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(Любитель @  7.11.2006,  17:57 Найти цитируемый пост)
На каком основании он может сделать выбор, что тебе надо возвратить int или double.

Если ты настолько хорошо знаешь язык, чтобы поднимать такие темы, то, думаю, как-нибудь сам догадаешься. Что касается макросов, то насчёт них я тут ни с кем спорить не собираюсь.
PM MAIL   Вверх
Любитель
Дата 9.11.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



UnrealMan,  просто я не вижу логичных оснований для выбора. Вероятно, ты хочешь возвращаеть double, если хоть один из параметров double? В этом случае тебе нужен шаблон с двумя параметрами, а возвращаемый тип определяется с помощью некоторого шаблонного класса (или структуры) с типедефом для выбора типа (и соответственно его специализации). Тем не менее я бы так делать не стал. Почему? Исходя из правила "умолчания, которые явно не понятны плохи" и "лучше пусть не работает, чем работает не хорошо".

ЗЫ Не обижайся, но насчёт макросов я всё-таки темку создам (через несколько дней). Спорить - это не плохо (если спорить, а не ргуаться)  smile 

Цитата(nickless @  8.11.2006,  23:57 Найти цитируемый пост)
Это не всегда возможно/удобно, например нельзя написать отдельно скажем класс капсулирующий работу с каким-нибудь алгоритмом шифрования, добавить к нему прогресс ивент и использовать везде и всюду без общего для всех проектов абстрактного класса.

Не понял? Если можно поясни. Создай интерфейс с нужными тебе методами. Потом наследуйся от этого интерфейса и ещё (возможно) чего-нибудь.



--------------------
PM MAIL ICQ Skype   Вверх
archimed7592
Дата 10.11.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



хотелось бы static конструкторов как в c#.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
UnrealMan
Дата 10.11.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(Любитель @  9.11.2006,  19:40 Найти цитируемый пост)
UnrealMan,  просто я не вижу логичных оснований для выбора. 

Т.е. ты считаешь, что в таком коде

int i = 1;
double d = 1.5;
double xMin = i < d ? i : d;

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

Цитата(Любитель @  9.11.2006,  19:40 Найти цитируемый пост)
Вероятно, ты хочешь возвращаеть double, если хоть один из параметров double?

А что, это не логичное желание? Может, всё же вспомним, что такие продвижения действительно используются, причём не только применительно к тернарному оператору, но и в случае сложения, умножения и т.д.?

Цитата(Любитель @  9.11.2006,  19:40 Найти цитируемый пост)
В этом случае тебе нужен шаблон с двумя параметрами, а возвращаемый тип определяется с помощью некоторого шаблонного класса (или структуры) с типедефом для выбора типа (и соответственно его специализации). 

Нет, мне-то как раз такой геморрой не нужен smile Я просто напишу MIN(1, 1.5), а макрос раскроет это следующим образом

min_(1 ? 1 : 1.5, 0 ? 1 : 1.5)

Теперь RTFM:

Цитата
Операция условия
          выражение-условия:
               логическое-выражение-ИЛИ
               логическое-выражение-ИЛИ ? выражение : выражение-условия

Условные выражения выполняются слева направо. Первое выражение должно быть арифметического типа или типа указателя. Оно вычисляется, и, если результат его отличен от нуля, то результатом условного выражения будет значение второго выражения, иначе результат - значение третьего выражения. Все побочные эффекты вычисления первого выражения могут возникать до вычисления второго или третьего выражения.
Если второе и третье выражение арифметического типа, и типы их совпадают, то таким же будет и тип результата, если они различаются, то выполняются обычные арифметические преобразования, чтобы привести их к общему типу. Если второе и третье выражение являются указателями или выражением-константой, дающим результат 0, выполняются преобразования указателей, чтобы привести результаты выражений к общему типу. Если второе и третье выражение являются ссылками, выполняется преобразование ссылок, чтобы привести их к общему типу. Если второе и третье выражение имеют тип void, общий тип будет void. Если второе и третье выражение имеют один тип класс T, общим типом будет T. Иначе, выражение считается недопустимым. Тип результата есть общий тип. Вычисляется только второе или третье выражение (но не оба). Результат будет адресом, если второй и третий операнд одного типа и являются адресами.

Итак, в данном случае имеем продвижение int в double. Таким образом, оба фактических параметра функции min_ оказываются одного типа – double. Надеюсь, дальше всё понятно.

Цитата(Любитель @  9.11.2006,  19:40 Найти цитируемый пост)
Тем не менее я бы так делать не стал. Почему? Исходя из правила "умолчания, которые явно не понятны плохи" и "лучше пусть не работает, чем работает не хорошо".

Уж не собираешься ли ты критиковать стандартную реализацию условного оператора? smile

Это сообщение отредактировал(а) UnrealMan - 10.11.2006, 11:16
PM MAIL   Вверх
nerezus
Дата 10.11.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Как человек, мало знакомый с сабжем, хочу от него потоки(Threads), гуй(GUI) и поддержку сети(сокеты). Все это на уровне языка.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
bsa
Дата 10.11.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(nerezus @ 10.11.2006,  12:04)
Как человек, мало знакомый с сабжем, хочу от него потоки(Threads), гуй(GUI) и поддержку сети(сокеты). Все это на уровне языка.

Лучше не языка, а стандартной библиотеки. Это более логично, имхо.
PM   Вверх
nerezus
Дата 11.11.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Ну да )
Но стандартная библиотека - это же часть языка )
Я же не сказал, что на уровне синтаксиса =)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
archimed7592
Дата 12.11.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



ещё хотелось бы использовать ф-ции в качестве параметров шаблона. причем как и обыкновенные, так и thiscall.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
archimed7592
Дата 12.11.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



и чтоб стандарт позволял делать такие вот извращения
Код
template <typename T>
inline bool default_comp (T &el1, T &el2)
{
    return el1 > el2;
}

template <typename T>
inline void default_swap (T &el1, T &el2)
{
    T temp = el1;
    el1 = el2;
    el2 = temp;
}

template <typename T, function bool comp (T el1, T el2) = default_comp<T>, function void swap (T &el1, T &el2) = default_swap<T>>
void qsort (T *start, T *end)
{
    // ...
    if (F (*i, *j))
        swap (*i, *j);
    // ...
}

inline bool comp1 (int el1, int el2)
{
    return el1 < el2;
}
inline void swap1 (int &el1, int &el2)
{
    int temp = el1;
    el1 = el2;
    el2 = temp;
}

inline bool comp2 (BigStruct &el1, BigStruct &el2)
{
    return el1->some_field > el2->some_field;
}
inline void swap (BigStruct &el1, BigStruct &el2)
{
    int temp = el1->some_field;
    el1->some_field = el2->some_field;
    el2->some_field = temp;
}

// ...

qsort (arr, arr + len);
qsort<int, comp1, swap1> (arr, arr + len);
qsort<BigStruct, comp2, swap2> (struct_arr, struct_arr + len);
qsort<BigStruct, BigStruct::operator >, swap2> (struct_arr, struct_arr + len);
qsort<BigStruct, some_object.some_compare_func, swap2> (struct_arr, struct_arr + len);
qsort<BigStruct, some_pointer_to_object->compare_func, swap2> (struct_arr, struct_arr + len);
qsort<BigStruct, (*some_pointer_to_object).compare_func, swap2> (struct_arr, struct_arr + len);
// etc...
заметьте в случае comp2 сигнатура отличается от шаблонной, но с точки зрения синтаксиса вызов этих ф-ций одинаковый...

зы. я не слишком много хочу от стандарта? я пока не нашел камней предткновения в реализации этой фичи...а фича оч даже полезная. думаю разница между вызовом ф-ции по указателю и вызовом конкретной ф-ции всем известна. дык вот, в случае когда вызовов не 1-2, а тысячи это должно дать нехилый выйгрыш...имхо


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
UnrealMan
Дата 13.11.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(archimed7592 @  12.11.2006,  20:23 Найти цитируемый пост)
ещё хотелось бы использовать ф-ции в качестве параметров шаблона. причем как и обыкновенные, так и thiscall.

Не понял... А передача указателей на функции и методы в качестве шаблонных параметров чем не устраивает?

Цитата(archimed7592 @  12.11.2006,  20:50 Найти цитируемый пост)
и чтоб стандарт позволял делать такие вот извращения

Ну, тут ещё надо разрешить шаблонные параметры по умолчанию для шаблонов функций – пока что такое дозволено лишь в отношении шаблонов классов. А так можно использовать что-то вроде

Код
template <typename T>
    bool default_comp(const T &el1, const T &el2)
{
    return el1 > el2;
}

template <typename T>
    void default_swap(T &el1, T &el2)
{
    T temp = el1;
    el1 = el2;
    el2 = temp;
}

template <class T, bool (*comp)(const T &el1, const T &el2), void (*swap)(T &el1, T &el2)>
    void qsort(T *start, T *end)
{
    // ...
}

template <class T>
    void qsort(T *start, T *end)
{
    qsort<T, default_comp<T>, default_swap<T> >(start, end);
}

// ...

Цитата(archimed7592 @  12.11.2006,  20:50 Найти цитируемый пост)
думаю разница между вызовом ф-ции по указателю и вызовом конкретной ф-ции всем известна

Дык тут указатель может быть только на конкретную функцию, поэтому её встраиванию ничто не препятствует.

P.S. to archimed7592. Вообще этакие темы надо обсуждать там, где есть такие яркие личности, как Hryak и Flex Ferrum :-)
PM MAIL   Вверх
archimed7592
Дата 13.11.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(UnrealMan @  13.11.2006,  21:55 Найти цитируемый пост)
Не понял... А передача указателей на функции и методы в качестве шаблонных параметров чем не устраивает?
да, что-то я проглючил. почему-то считал, что передается указатель в переменной...только сейчас дошло, что параметры шаблонов в любом случае константы smile но всё равно не получиться для stdcall подсунуть thiscall для конкретного объекта и наоборот, а хотелось бы - проблемы в реализации быть не должно...почему не сделали ещё - хз.

Цитата(UnrealMan @  13.11.2006,  21:55 Найти цитируемый пост)
P.S. to archimed7592. Вообще этакие темы надо обсуждать там, где есть такие яркие личности, как Hryak и Flex Ferrum :-)
тему поднимать неохота, а здесь она уже есть...флаг в руки, поднимай тему на сорсах, будем обсуждать с яркими личностями smile 



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1168 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.