Re: [info] Blocks
От: remark Россия http://www.1024cores.net/
Дата: 05.12.09 20:53
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>
KP>blockReturningIntTakingChar = ^int (char arg) { return arg*10; };
KP>int n = blockReturningIntTakingChar(‘a’);
KP>


Поубивал бы за то, что они сделали своё расширение для лямбд, когда комитет С++ уже практически стандартизовал лямбды в языке и основные поставщики уже поддержали их
Молодцы — одно слово

От того, что у них единый синтаксис для С, С++ и Objective-C мало кому тепло; а вот от того, что разный синтаксис у разных компиляторов С++ ничего кроме проблем.

Они реализовали __block переменные*, которых нет в С++0х; но я уверен они могли бы это сделать как расширение для С++0х лямбд, тогда по-крайней мере __block переменные можно было бы просто не использовать, если нужна портируемость.

* __block переменные предоставляют настоящие замыкания. Т.е. если в С++0х передал переменную как [&], но её время жизни не согласовано со временем жизни лямды — сам себе злобный буратино. __block переменные же автоматически будут жить пока живёт лямбда. Т.к. сборки мусора нет, то __block переменная, естественно, просто копируется со стека в динамическую память (насколько я понял, лениво, т.е. только при необходимости).


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.