C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.08.07 10:48
Оценка: 33 (10)
Недавно в большом флейме на linux.org.ru, посвященном интервью Страуструпа о C++0x, добрая душа дала ссылку на описание C++0x в Wikipedia: http://en.wikipedia.org/wiki/C%2B%2B0x
Мне понравилось, т.к. дает развернутое впечатление о грядущих возможностях без необходимости самому копаться в различных предложениях к стандарту.

Из того, что меня, как говорится, "торкнуло":

* лябмды:
std::vector<int> someList;
int total = 0;
std::for_each(someList.begin(), someList.end(), <&>(x) {total += x});


* новые литералы:
Length operator"_miles"(float fValue) {return Length(fValue, Length::MILES);}
Length someLength = 12.5_miles // Вах!!!;


Скорей бы это все реализовали, а то ведь и слюной захлебнуться можно

Кстати, кто-нибудь знает, не планируется ли в C++0x что-то типа static if из языка D?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: C++0x в Wikipedia
От: igna Россия  
Дата: 19.08.07 05:39
Оценка:
Здравствуйте, eao197, Вы писали:

E>Length operator"_miles"(float fValue) {return Length(fValue, Length::MILES);}
E>Length someLength = 12.5_miles // Вах!!!;


А так нельзя?:

Length operator"miles"(float fValue) {return Length(fValue, Length::MILES);}
Length someLength = 12.5 miles;
Re: C++0x в Wikipedia
От: c-smile Канада http://terrainformatica.com
Дата: 19.08.07 06:41
Оценка:
Здравствуйте, eao197, Вы писали:

E>* новые литералы:

E>
E>Length operator"_miles"(float fValue) {return Length(fValue, Length::MILES);}
E>Length someLength = 12.5_miles // Вах!!!;
E>


Однако

length_t miles(float v) { return length_t(v, length_t::MILES); }
length_t some_length = miles(12.5);


честнее что-ли будет. Да и пользительнее. В смысле чудес однако не быват.
Платить как всегда придется скоростью компиляции.

E>Кстати, кто-нибудь знает, не планируется ли в C++0x что-то типа static if из языка D?


А может лучше цезарю — цезарево? В смысле #if со товарищи развить до кондиции?
Re[2]: C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.08.07 07:23
Оценка:
Здравствуйте, igna, Вы писали:

I>А так нельзя?:


I>
I>Length operator"miles"(float fValue) {return Length(fValue, Length::MILES);}
I>Length someLength = 12.5 miles;
I>


Сомневаюсь, так получается два разных токена.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.08.07 07:34
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Однако


CS>
CS>length_t miles(float v) { return length_t(v, length_t::MILES); }
CS>length_t some_length = miles(12.5);
CS>


CS>честнее что-ли будет.


Может быть, хотя люди предпочитают писать a + b, а не add(a,b). Так же для многих записи 1_mm, 3_cm, 5_kg, 0.5_litre будет гораздо приятнее.

CS>Да и пользительнее. В смысле чудес однако не быват.

CS>Платить как всегда придется скоростью компиляции.

К тому времени, когда появятся компиляторы C++0x на тормоза по разбору новых лексем вряд ли можно будет обращать внимание. Тем более, что шаблоны по любому будут добавлять тормозов больше, чем эти лексемы.

E>>Кстати, кто-нибудь знает, не планируется ли в C++0x что-то типа static if из языка D?


CS>А может лучше цезарю — цезарево? В смысле #if со товарищи развить до кондиции?


Добавляют же в язык static_assert. Может и static if бы не помешал для compile-time вычислений без использования шаблонного метапрограммирования.

Кстати: нужно будет после окончания D Conference спросить у Валтера со товарищи, в чем же D будет лучше C++0x


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: C++0x в Wikipedia
От: Smooky Россия  
Дата: 19.08.07 12:47
Оценка: +1 -5 :))) :))
Никак не могу понять, зачем всё таки что-то выдумывать и наворачивать?! Чего не хватает та?! Ведь есть же C/C++ в том виде в каком он есть! И ВСЁ! НЕ НАДО БОЛЬШЕ НИЧЕГО! куча библиотек, подпрограмм, классов написано за столько лет. Всё отлично работает. И сейчас софт пишется на том C/C++ какой он щаз есть! И пусть всё будет так! Не надо ничего менять и добавлять!

"eao197" <31476@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:2625904@news.rsdn.ru...
> Недавно в большом флейме на linux.org.ru, посвященном интервью Страуструпа о C++0x, добрая душа дала ссылку на описание C++0x в Wikipedia: http://en.wikipedia.org/wiki/C%2B%2B0x
> Мне понравилось, т.к. дает развернутое впечатление о грядущих возможностях без необходимости самому копаться в различных предложениях к стандарту.
>
> Из того, что меня, как говорится, "торкнуло":
>
> * лябмды:
>
> std::vector<int> someList;
> int total = 0;
> std::for_each(someList.begin(), someList.end(), <&>(x) {total += x});
>

>
> * новые литералы:
>
> Length operator"_miles"(float fValue) {return Length(fValue, Length::MILES);}
> Length someLength = 12.5_miles // Вах!!!;
>

>
> Скорей бы это все реализовали, а то ведь и слюной захлебнуться можно
>
> Кстати, кто-нибудь знает, не планируется ли в C++0x что-то типа static if из языка D?
>
Posted via RSDN NNTP Server 2.1 beta
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re[2]: C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.08.07 13:20
Оценка:
Здравствуйте, Smooky, Вы писали:

S>Никак не могу понять, зачем всё таки что-то выдумывать и наворачивать?! Чего не хватает та?!


* Выразительности.
* Скорости компиляции.
* Библиотек.
* Простоты.

Хотя с появлением C++0x простоты в языке врядли добавится


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: C++0x в Wikipedia
От: remark Россия http://www.1024cores.net/
Дата: 19.08.07 19:58
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>
CS>length_t miles(float v) { return length_t(v, length_t::MILES); }
CS>length_t some_length = miles(12.5);
CS>


CS>честнее что-ли будет. Да и пользительнее. В смысле чудес однако не быват.

CS>Платить как всегда придется скоростью компиляции.

Корни растут из числовых констант:
1u
2ll
3ull
4.0d



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: C++0x в Wikipedia
От: c-smile Канада http://terrainformatica.com
Дата: 19.08.07 20:18
Оценка:
Здравствуйте, remark, Вы писали:

R>Корни растут из числовых констант:

R>
R>1u
R>2ll
R>3ull
R>4.0d
R>


Ага, понятно. Т.е. конструкция всегда должна быть standalone — т.е. не member
of a class.

length_t operator"mm"(float v) { return length_t(v, length_t::MM); }


Я правильно это понимаю?
Re[4]: C++0x в Wikipedia
От: remark Россия http://www.1024cores.net/
Дата: 19.08.07 20:49
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Ага, понятно. Т.е. конструкция всегда должна быть standalone — т.е. не member

CS>of a class.

CS>
CS>length_t operator"mm"(float v) { return length_t(v, length_t::MM); }
CS>


CS>Я правильно это понимаю?


Ну где конкретно это записывать (в классе или нет) сейчас не скажу. Но связана она как раз классом, т.е. это фактически типа конструктора класса.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: C++0x в Wikipedia
От: dip_2000 Россия  
Дата: 20.08.07 04:30
Оценка:
Поддержка мультитредовости на удовне языка не менее вкусна, имхо


active
{
  // First block.
  {
    // ...
  }
  // Second block.
  for( int j = N ; j > 0 ; j-- )
  {
    // ...
  }
  // Third block.
  ret = function(parameter) ;
  // Other blocks.
  // ...
}
All blocks are executed in parallel. After the execution of every block has ended, the program continues with a single thread.



int function( int parameter ) ;
// Calls the function and immediately returns.
IdThreadType<function> IdThread = future function(parameter) ;
// Waits for the function result.
int ret = wait IdThread ;


итд


E>Скорей бы это все реализовали, а то ведь и слюной захлебнуться можно

Re: C++0x в Wikipedia
От: minorlogic Украина  
Дата: 20.08.07 05:31
Оценка: 6 (2)
Давно пора отрезать а не добавлять ...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: C++0x в Wikipedia
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 20.08.07 06:44
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Давно пора отрезать а не добавлять ...


Вопрос: а много ли было отрезано в течении жизни c++? Не объявлено deprecated и т.д., а именно выкинуто из стандарта и потом из наиболее популярных компиляторов?
Есть такое предположение, что ничего или почти ничего.
Хорошо там, где мы есть! :)
Re[3]: C++0x в Wikipedia
От: Erop Россия  
Дата: 20.08.07 07:22
Оценка:
Здравствуйте, ShaggyOwl, Вы писали:

SO>Вопрос: а много ли было отрезано в течении жизни c++? Не объявлено deprecated и т.д., а именно выкинуто из стандарта и потом из наиболее популярных компиляторов?

SO>Есть такое предположение, что ничего или почти ничего.


например, такая конструкция:
struct CB {
    int f( int);
};

struct CD : CB {
    float f ( float );
    CB::f;
};


или старая версия области видимости параметра цикла for
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: C++0x в Wikipedia
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 20.08.07 07:56
Оценка:
Здравствуйте, Erop, Вы писали:

SO>>Вопрос: а много ли было отрезано в течении жизни c++? Не объявлено deprecated и т.д., а именно выкинуто из стандарта и потом из наиболее популярных компиляторов?

SO>>Есть такое предположение, что ничего или почти ничего.


E>например, такая конструкция:

E>
E>struct CB {
E>    int f( int);
E>};

E>struct CD : CB {
E>    float f ( float );
E>    CB::f;
E>};


E>или старая версия области видимости параметра цикла for


Еще дефолтный тип возвращаемого значения для функции и тому подобная мелочевка.
Вместе с тем, остается масса вещей, которые делают синтаксис c++ сложным — обратная совместимость. Я к тому, что ожидать превращения c++ (в любой версии стандарта) в конфетку не приходится.
Хорошо там, где мы есть! :)
Re[2]: C++0x в Wikipedia
От: Roman Odaisky Украина  
Дата: 20.08.07 08:35
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Давно пора отрезать а не добавлять ... :(


Что именно?
До последнего не верил в пирамиду Лебедева.
Re[2]: C++0x в Wikipedia
От: remark Россия http://www.1024cores.net/
Дата: 20.08.07 08:38
Оценка: +1 :))) :)
Здравствуйте, minorlogic, Вы писали:

M>Давно пора отрезать а не добавлять ...


Полностью урезанная версия уже есть, это — С


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: C++0x в Wikipedia
От: igna Россия  
Дата: 20.08.07 10:48
Оценка: :)
Здравствуйте, Roman Odaisky, Вы писали:

M>>Давно пора отрезать а не добавлять ...


RO>Что именно?


Наследование. STL, например, можно написать без наследования.

А из библиотеки — потоки ввода-вывода.
Re[2]: C++0x в Wikipedia
От: alzt  
Дата: 20.08.07 11:48
Оценка:
Здравствуйте, igna, Вы писали:

I>А так нельзя?:


I>
I>Length operator"miles"(float fValue) {return Length(fValue, Length::MILES);}
I>Length someLength = 12.5 miles;
I>


"Почти" такое уже реализовано :

const double miles = ...;//
Length someLength = 12.5 * miles.
Re: C++0x в Wikipedia
От: alzt  
Дата: 20.08.07 12:04
Оценка:
Здравствуйте, eao197, Вы писали:

Вот это явно не помешает:

int main( )
{
  shared_ptr<double> p_first(new double) ;

  if( true )
  {
    shared_ptr<double> p_copy = p_first ;

    *p_copy = 21.2 ;

  }  // Destruction of 'p_copy' but not of the allocated double.

  return ;  // Destruction of 'p_first' and accordingly of the allocated double.
}
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.