to post messages and comments.

зачем изучать монады? Чтобы boost::optional::value_or_eval не возвращал value, блядь, _type

Поменял-таки себе телефон с древнючего (меньше трёх лет и полностью работоспособного, но не вмещающего уже в свои мозги жирного софта) Samsung Galaxy Ace на Highscreen Boost II SE. Поддержал заодно отечественного производителя. Что могу сказать — вполне достойное соотношение "цена-качество". Большую батарею (которая на 6000 mAh) пока не пробовал, а на маленькой (3000) он спокойно жил с постоянно включённым вайфаем по два дня, пока я не наставил всякой хрени (в т. ч. и жуйк-адвансед, который своими фоновыми процессами таки высасывает энергию). Сейчас малой батареи хватает на один день. Хреново, что стандартный чехол с полезными дырками для камер и кнопок налезает только с ней; для большой батареи придётся искать одёжку от более крупного телефона, и это будет просто карман. Но в целом телефон мне нравится. Толком, правда, ещё не потестировал камеру, у неё какой-то программный глюк с автофокусом. Возможно, просто поставлю другую прогу. Ещё в камере есть встроенный режим HDR, но с ним пока не разобрался. То ли виснет телефон с ним, то ли что-то не так делаю. В общем, рецомменд.

Вот за что я люблю шаблоны, так это за
error: no match for 'operator=' in '((TimeBlock*)this)->TimeBlock::sec = boost::chrono::operator-(const boost::chrono::time_point<Clock, Duration1>&, const boost::chrono::time_point<Clock, Duration2>&) [with Clock = boost::chrono::steady_clock; Duration1 = boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >; Duration2 = boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >; typename boost::common_type<Duration1, Duration2>::type = boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >](((const boost::chrono::time_point<boost::chrono::steady_clock>)(&((TimeBlock*)this)->TimeBlock::prestart)))'

Это же очевидно как решать!
candidate is:
In file included from /usr/include/boost/chrono/chrono.hpp:11:0,
from /usr/include/boost/chrono/include.hpp:15,
from /usr/include/boost/chrono.hpp:17
/usr/include/boost/chrono/duration.hpp:453:19: note: boost::chrono::duration<Rep, Period>& boost::chrono::duration<Rep, Period>::operator=(const boost::chrono::duration<Rep, Period>&) [with Rep = long long int; Period = boost::ratio<1ll, 1000ll>; boost::chrono::duration<Rep, Period> = boost::chrono::duration<long long int, boost::ratio<1ll, 1000ll> >]
/usr/include/boost/chrono/duration.hpp:453:19: note: no known conversion for argument 1 from 'boost::common_type<boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >, boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >, void>::type {aka boost::chrono::duration<long long int, boost::ratio<1ll, 1000000000ll> >}' to 'const boost::chrono::duration<long long int, boost::ratio<1ll, 1000ll> >&'

в spirit2 уничтожили вообще всю документацию нахуй. Вот всё что есть про обработку ошибок, не считая исходников: boost.org . Вот точно, быстрее свою библиотеку парсеров сделать чем в этом говне разобраться.

Обновление прошивки 2.8
support.highscreen.org
Что нового:

Обновление содержит в себе все дополнения и правки предыдущих версий.
Повышена общая стабильность работы системы.
Скорректировано отображение оперативной памяти устройства.
Внимание:

Данная прошивка не предназначена для устройств Rev.B! Установка этой прошивки на Boost Rev.B может привести к выходу аппарата из строя. В случае обнаружения в сервисном центре того, что причиной некорректной работы устройства стала установка этой прошивки наHighscreen Boost Rev.B – такой случай будет признан не гарантийным и ремонт будет производиться за счет владельца аппарата.

Принадлежность аппарата к Rev.B указана на наклейке под аккумуляторным отсеком


Сцуки. Раньше нельзя было сказать что 28B это только для урезанной версии.

Что-то не могу осилить. Нужно создать функтор, который выполняется при условии, иначе возвращает дефолтное значение. Есть что-то подобное в бусте, например?

пример использования
boost::function<bool()> f = functor<bool(), predicate, false);

Жуик Пипл, нид хелп. Как заставить cmake линковать программу с liboost_thread.so, не с libboost_thread.so.1.40.0?

у кого нибудь boost::process работает на windows с последними версиями boost ?

Пишу с другом апдейтер. На моих плечах работа с файлами и списками файлов.
Тестирую на своем каталоге с исходниками, размер которого 936 МБ в котором 40 217 файлов и 4146 каталогов. Программа обходит рекурсивно указанную папку и создает md5-хэш для каждого файла и каталога на основе его содержимого. В качестве данных для хэширования каталога, я решил использовать хэши его файлов/каталогов.

Для указанного мной ранее каталога, это заняло 15 мин. и 44 сек.
Компилировал без оптимизации, разве что -s :3
Для того же самого каталога, но с -O3 и -Os, это заняло 15 мин. 39 сек.
И наконец, просто с -O2 это заняло 15 мин. 27 сек

Пока без поддержки многоядерности. Посему наблюдается лишь 50% заргузки на моем ноуте.
Потребление памяти не замерял, но точно менее 10МБ.
Достаточно неплохие результаты на мой взгляд, буду продолжать работать в этом направлении :)

жуйк, такая проблема. Во FreeBSD 7.4 пытаюсь собрать swiften. SCons не видит boost/signal.hpp, хотя он лежит в /usr/local/include/boost/signal.hpp
вопрос: как сказать SCons'у где искать boost-libs?
P.S.: в Arch Linux всё собирается boost-libs 1.48 в Арче и во FreeBSD, SCons 2.1.0, swiften из git.

Пишу кросплатформенную тулзу, которой нужно довольно шустро в несколько потоков дробить числа. Смотрю на бустовские threads. Плюсы, минусы, подводные камни ?

Искал проекты где используется boost.test, нашел только сам boost. Плохо искал?

Вот чувак пишет норм на c++ habrahabr.ru

Онлайновый компилятор с выводом ошибок компиляции, поддержкой boost и выводом результатов работы программы (stdout):
liveworkspace.org

в boost есть такой замечательный способ работать с серийными портами через Boost.Asio
boost.org
а кто мне скажет как таким же замечательным кросс-платформенным методом получить те самые имена всех доступных портов в системе?

Можно ли как-то создать создать специализацию шаблона для типов, для которых определена операция std::ostream::opertor<< ?

Я анверно делают что-то не то, но как вытащить и распарсить бустом несколько json объектов из стрима? read_json пытается сделать из всего содержимого стрима один json объект, а соответственно ждет окончания данных.

Пытаюс скомпилить рпимер по boost::asio. Получаю такую ошибку: «async_connect» не является элементом «boost::asio»

Буст — такая няшка!
[806] boost::multi_index::multi_index_container<std::pair<std::string const, boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > >, boost::multi_index::indexed_by<boost::multi_index::sequenced<boost::multi_index::tag<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> >::subs::by_name, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<std::pair<std::string const, boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > >, std::string const, &(std::pair<std::string const, boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > >::first)>, std::less<std::string> >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<std::pair<std::string const, boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > > > >::insert_(std::pair<std::string const, boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > > const&)

Узнал про C++ Debugger Visualizers для Visual Studio тут habrahabr.ru

Хорошая вещь, для boost кое-что есть тут svn.boost.org

Шаблонные шаблонные параметры это прошлый век, они не удобны.
Есть способы их избегать. Например:
есть класс A, в котором нужно объявлять контейнер из произвольного типа, а тип контейнера передавать параметром шаблона:

template <typename T, typename Container>
struct A
{
  typedef Container<T> type;
};

Но так как Container это шаблон, принимающий два параметра: тип данных и тип аллокатора,
то следует писать так:

template <typename T, template<typename, typename> class Container>
struct A
{
  typedef Container<T, std::allocator<T> > type;
}

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

Чтобы получить тип теперь мы должны вызвать:
typedef A<int, std::vector>::type type;

В boost mpl есть плейсхолдеры, которые используются для создания лямбда метафункций. С помощью них можно избежать создания шаблонных шаблонных параметров. То есть я передаю в шаблон A уже инстанцированный шаблон так:
typedef A<int, std::vector<boost::mpl::_1> >::type type;

Тогда в шаблоне A инстанцирование конейнера с произвольным типом будет выглядеть так:

#include <boost/mpl/apply.hpp>

template <typename T, typename Container>
struct A
{
  typedef boost::mpl::lambda<Container> lambda;
  typedef typename boost::mpl::apply<lambda, T>::type type;
};

Только сейчас обнаружил для себя BOOST_AUTO (#include <boost/typeof/std/utility.hpp>),
например, перебирать итераторы можно вместо громоздкого
for (std::map<int, int>::const_iterator iter = a.begin(); iter != a.end(); ++iter)
так:
for (BOOST_AUTO(iter, a.begin()); iter != a.end(); ++iter)

Как-то туго boost::asio идет(

Так удалось передавать строки с сервера и печатать их на клиенте. Завтра еще потыкаем. А сейчас спать.

Послал привет мир по сети ^_^

Еще чуть чуть и я перейду на чистый С

Нельзя просто так взять и настроить boost

Кто буст asio тыкал? Не компилируется пример из документации. Там есть какие-то подводные камни?

Хотел сегодня потыкать буст сокеты. Ага конечно, ща вот сижу буст ставлю/настраиваю

Хоть я в старые времена и считал что у буста хорошая документация, сравнивать одни доки boost::regex с python.re даже не хочется, на столько качество разное, хотя вот для буста люди явно старались не мало.

Пилю сейчас пару небольших вкусняшек для ST2. Для начала, занялся TODO-списком. Для самого начала — списком локальным(только с текущего файла). Для поиска используется find_all метод текущего view. Фишка в том, что там поддерживаются регекспы, форматирование, пара флагов, но всё это сделано не через Python, а через Boost. Следовательно, там нет поддержки некоторых фишек re-модуля питона и форматирование там совсем иное. Жаль что в доках этого не было упомянуто. Хорошо хоть я сам сообразил почти сразу, после нулевого результата попытки форматировать результат через строку "{0}".
Продолжение следует.

подскажите как собрать asio отдельной либой ?

Я опять вляпался в стандартную ошибку порграммиста — сначала написал парсер, а только потом узнал про boost::spirit :(

flock, fcntl, boost::interprocess::file_lock...
одно работает только под windows, другое только под unix, есть ешё hp-ux, под ним вообще ничего не работает.

А не знает ли кто-нибудь, как средствами boost приджоиниться к source-specific multicast группе? Именно smm. Типа как IP_ADD_SOURCE_MEMBERSHIP? очень надо.

map<string, path> paths;
for(directory_iterator it = directory_iterator(path); it != directory_iterator(); it++)
{
//paths.insert(fileMd5(it), it->path().filename());
//cout << it->path().filename();
}

Говорит, что expected primary expression перед скобками в for.
ЧЯДНТ?

Fedora x86_64 при моей дерзкой попытке поставить boost-devel выдает прекраснейшее сообщение об ошибке:
Помилка: boost-serialization-1.47.0-3.fc16.i686 != boost-serialization-1.47.0-4.fc16.x86_64спасибо, капитан.
а вообще, да буст не ставится, какие-то зависимости поломатые.

Буст не нужен, если нет цели использовать приложение на линупсе и нет строгого требования отказаться от использования qt. И так, и так будет весить дохуя, вот только если использовать Qt, то кодинг на цпп превращается в кодинг на питоне, когда кодинг с бустом есть минное поле, ради которого приходится жертвовать стольким, делать столько хаков, ебаться столько, что кодить на цпп уже не захочется.

Буст не поддерживает wstring, только string("т.к. буст вызывает сразу winapi, а хуй знает как там, в венде, с юникодом, поэтому и юзаем так", почти цитата с rsdn), а в "студии" юникод нормально не отключить. Вот и получается что буст с юникодом никак, а студия без него никуда, приходится хачить-трюкачить, блеать.

-DBOOST_THREAD_USE_LIB — и все компилится, и даже где то работает