Xavier Lamorlette

C++ : Divers

Lexical cast

lexical_cast converts using stream operators. If it fails, it throws a bad_lexical_cast exception.

#include <boost/lexical_cast.hpp>
string s = lexical_cast<string>(3);

Literals

Prédéfinis

auto s = "hello"s;          // std::string
auto t = 3h + 28min + 12s;  // t is a chrono::duration

constexpr auto tenMillion = 10'000'000;  // on peut utiliser ' pour séparer les chiffres d'un nombre

Utilisateur

constexpr unsigned long operator ""_K (unsigned long x) {
    return 1024 * x;
}

Range based loop pour une classe utilisateur

class A_iterator {
    A_iterator(const A_iterator & other);
    A & operator * () const;
    A_iterator & operator ++ () {
        […]
        return * this;
    }
};
bool operator != (const A_iterator & lhs, const A_iterator & rhs);

class A_const_iterator {
    A_const_iterator(const A_iterator & other);
    const A & operator * () const;
    A_const_iterator & operator ++ () {
        […]
        return * this;
    }
};
bool operator != (const A_const_iterator & lhs, const A_const_iterator & rhs);

class A_collection {
    A_iterator begin();
    A_iterator end();
    A_const_iterator begin() const;
    A_const_iterator end() const;
};

Static assertion

Assertion verified at compile time.

template<typename T>
class A {
    T *_t;
    static_assert(not(is_void<T>::value, "Instantiating template class A with void");
};

Tuples : fonctions utilitaires

make_tuple(t1, …, tn)

tie(t1 … tn) ~ make_tuple(ref(t1) … ref(tn)):
  int i;
  string s;
  tie(i, s) = make_tuple(3, "hello");
  tie(i, ignore) = //

La dernière mise à jour de cette page date d'août 2020.

Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.