Archives de la catégorie Trucs & Astuces
boost goodie to clamp numbers
Posté par Olivier dans Trucs & Astuces le 10 juin 2015
How do you clamp a number in a given range in C++ ? Classical way to do it is: double clamped = std::min(maxValue, std::max(minValue, value)) But why repeat this magic formula when boost has clamp() for you ? From now on, do: #include double clamped = boost::algorithm::clamp(value, minValue, maxValue)
Namespace, template typedef and operator overloads – The Evil trio
Posté par Olivier dans Trucs & Astuces le 10 juin 2015
What an unconfortable situation ? I had the following code which would not compile. // Range.h #include <boost/numeric/interval.hpp> #include <iostream> namespace App { template <typename T> using Range = boost::numeric::interval<T>; template <typename T> std::ostream& operator<<(std::ostream &os, const Range<T> &r) { … } } // namespace App // Filter.cpp #include "Range.h" #include <iostream> namespace App { […]
Moving an object that wraps a vector and an iterator on that vector
Posté par Olivier dans Trucs & Astuces le 27 août 2014
I recently stumbled upon code that looked very suspicious to me. Basically, it was a class which amongst other things held a vector and some iterators from that vector. Something like this: struct Wrapper { typedef std::vector<int> Data; Data data; Data::iterator active; Wrapper() : data(), active(data.end()) { } […]
C++ Thread synchronization pitfall: using a barrier to synchronize a thread start
Posté par Olivier dans Trucs & Astuces le 20 novembre 2013
The context: You want to create a worker thread. Before the main thread goes on, you want to ensure that the worker thread starts. Using a boost::barrier seems like a good idea.
Installing Google Play enabled firmware on Arnova 7b G3
Posté par Olivier dans Trucs & Astuces le 7 octobre 2013
Some time ago, our daughter bought an Arnova 7b G3 tablet. Although the device is very well done, its primary disadvantage is that it does not include Google Play. As a consequence, it is only possible to install new applications from the rather limited AppsLib. What she wanted was to be able to install applications […]
std::unique_ptr, virtual and missing virtual destructor = major pitfall
Posté par Olivier dans Trucs & Astuces le 29 août 2013
In our company, the build infrastructure runs unit tests in a valgrind shell, trying to detect memory leaks at the time the unit tests are executed. And every now and then, although our memory allocations are mostly handled through std::unique_ptr or std::shared_ptr, a leak pops up on the radar. And usually with the most useless […]
Installing Skype 4 on a 64b Linux
Posté par Olivier dans Trucs & Astuces le 22 août 2013
It’s so easy they say on the website… Download the .deb and install. But problem: the .deb won’t install since it is meant for i386, not for x64.
Installing GCC 4.7 in Ubuntu 12.04
Posté par Olivier dans Trucs & Astuces le 17 février 2013
Ubuntu 12.04 provides only GCC 4.6. To get GCC 4.7 (and its more advanced C++11 support), you need either to use Ubuntu 12.10 or you need to add a toolchain test repository. This page summarizes the latter option. To install GCC 4.7 in Ubuntu 12.04, do the following: sudo -s add-apt-repository ppa:ubuntu-toolchain-r/test apt-get update apt-get […]
Restaurer l’accès 3G/MMS de l’iPhone après un upgrade majeur
Posté par Olivier dans Trucs & Astuces le 4 décembre 2012
A chaque upgrade majeur de l’iPhone, c’est la même rangaine: le symbole 3G s’affiche mais pas de connexion et les MMS ne sont plus reçus, les paramètres se perdent dans la manoeuvre. Voici le résumé de ce qu’il faut faire pour récupérer les accès. Accès Internet par la 3G Dans Réglages, sélectionner Général > Réseau […]