Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.236.228] |
|
Страницы: (77) « Первая ... 9 10 [11] 12 13 ... 76 77 ( Перейти к последнему сообщению ) |
Сообщ.
#151
,
|
|
|
Ну не скажи. Лямбды они тем и хороши, что могут работать в контексте инициализации функтора. |
Сообщ.
#152
,
|
|
|
Цитата Flex Ferrum @ Хотя, нередко std::accumulate используется именно для последовательной сцепки элементов. В паралельном режиме результат, гм... непредсказуем... Вот это, к слову говоря, открывает одну палку С++ о двух концах. С одной стороны, стремление в С++ к минимализму, в принципе, мне понятно и чем-то изнутри меня это стремление одобряется. С другой стороны, крайность, с которой С++ проповедует минимализм меня немного ужасает. Вот взять std::string и QString - в первом всего по минимум, другим, OTOH, очень удобно пользоваться. Почему не сделают какой-никакой аналог интерфейса QString, .NET::System::String, etc.? Аналогично с алгоритмами - почему нет строковых алгоритмов, в частности concatenate/join мне не совсем понятно... Его стоило бы ввести даже если бы для accumulate был бы специфицирован порядок аккумуляции по той простой причине, что я хочу сказать в коде "я объединяю коллекцию строк", а не "я аккумулирую коллекцию строк". |
Сообщ.
#153
,
|
|
|
archimed7592
// library code SomeLibrary1::SomeClassImplementation1 getSomeValue1(); // library code SomeLibrary2::SomeClassImplementation2 getSomeValue2(); // client code auto value1 = getSomeValue1(); auto value2 = getSomeValue2(); // ок. А теперь я хочу вызвать какие-то методы value1.SomeMethod1(); value2.SomeMethod2(); // Э... А как их различать? А как компилятор различает эти 2 разных типа? // А может, так? (SomeLibrary1::SomeClassImplementation1)value1.SomeMethod1(); (SomeLibrary1::SomeClassImplementation1)value2.SomeMethod2(); // Фуууууу.... |
Сообщ.
#154
,
|
|
|
Цитата archimed7592 @ Его стоило бы ввести даже если бы для accumulate был бы специфицирован порядок аккумуляции по той простой причине, что я хочу сказать в коде "я объединяю коллекцию строк", а не "я аккумулирую коллекцию строк". Ээээ... std::vector<string> strings = ....; std::string result = boost::join(strings, "\\"); string_algo |
Сообщ.
#155
,
|
|
|
И вообще, я такой код уже где-то видел.
Э... Дай мне мой маразм памяти... 10 DEM i1 = 12; 20 DEM i2 = 'Hello' 30 Print i2; 40 Print i1; 50 goto 10 Как-то так |
Сообщ.
#156
,
|
|
|
Цитата Hsilgos @ И вообще, я такой код уже где-то видел. Э... Дай мне мой маразм памяти... Правда, тут нужно учесть разницу между compile-time и run-time типизацией. |
Сообщ.
#157
,
|
|
|
Цитата Flex Ferrum @ Ээээ... Ээээ, это буст, я про стандартную библиотеку. Почему нет в стандарте - одному комитету известно... Hsilgos, либо я тебя не понимаю, либо ты меня. Третьего не дано . Цитата Hsilgos @ // Э... А как их различать? А как компилятор различает эти 2 разных типа? Вот зачем ему что-то различать? Он и так знает какого типа переменная... Опять же, провожу аналогию с шаблонными ф-циями: // library code template< class StringT > void foo(const StringT &str) { int len = str.length(); // как он различает? А может так: ... Фyyyyуу std::cout << "passed string length equals to " << len << std::endl; // ... } // client code std::string ss = "standard string"; QString qs = "qt string"; foo(ss); foo(qs); Ты давно пользуешься тем свойством компилятора, что он всегда знает статические типы переменных(по крайней мере язык так устроен, что он не может не знать) просто, видимо, не до конца осознаёшь этого... |
Сообщ.
#158
,
|
|
|
Цитата archimed7592 @ Ээээ, это буст, я про стандартную библиотеку. Почему нет в стандарте - одному комитету известно... Тебе шашечки или ехать? |
Сообщ.
#159
,
|
|
|
Цитата Flex Ferrum @ Тебе шашечки или ехать? Мне бы скрестить наилучшии стороны C++, Java и C#, включая их фреймворки . |
Сообщ.
#160
,
|
|
|
Цитата archimed7592 @ Мне бы скрестить наилучшии стороны C++, Java и C#, включая их фреймворки . О как... ИМХО, это из области фантастики... |
Сообщ.
#161
,
|
|
|
Цитата Flex Ferrum @ ИМХО, это из области фантастики... Это ещё почему? |
Сообщ.
#162
,
|
|
|
Цитата archimed7592 @ Это ещё почему? Концепции слишком сильно различаются. Я думаю, например, что если бы было возможно перенести плюсовые шаблоны в шарп - это было бы сделано, но вместо этого там какие-то generic'и... И это, вообщем то, объяснимо. Тот же reflection накладывает свои ограничения. Ну и т. д. |
Сообщ.
#163
,
|
|
|
Цитата Flex Ferrum @ Концепции слишком сильно различаются. Я думаю, например, что если бы было возможно перенести плюсовые шаблоны в шарп - это было бы сделано, но вместо этого там какие-то generic'и... И это, вообщем то, объяснимо. Тот же reflection накладывает свои ограничения. Ну и т. д. Флекс, я вот, хоть убей, никак не пойму, что мешает шаблонам жить рядом с дженериками, рефлексивным классам рядом с нерефлексивными, управляемой куче и неуправляемой, множественному наследованию и интерфейсам и т.д... Добавлено Цитата Flex Ferrum @ Концепции слишком сильно различаются. BTW, я это отлично понимаю, но у меня в голове уже некоторое время крутится идея как эти концепции скрестить для получения более эффективной. |
Сообщ.
#164
,
|
|
|
Цитата archimed7592 @ Флекс, я вот, хоть убей, никак не пойму, что мешает шаблонам жить рядом с дженериками, рефлексивным классам рядом с нерефлексивными, управляемой куче и неуправляемой, множественному наследованию и интерфейсам и т.д... Судя по всему, технически это совместить очень сложно. |
Сообщ.
#165
,
|
|
|
Цитата Flex Ferrum @ Судя по всему, технически это совместить очень сложно. Флекс, ну у тебя же на компьютере нормально сосуществует куча нативного кода и ява/дотнеты-машины? Кстати, managed C++ - совмещено? Совмещено... Просто плохо и неудобно совмещено(по понятным причинам - целью было добится какой-нибудь совместимости, а ценою чего эта совместимость достанется никого, видимо, не волновало). |