• [^] # Re: En vrac

    Posté par . En réponse au journal Pourquoi empaqueter KDE prend-il du temps ?. Évalué à 2.

    Euh, on n'a pas la même version de clang alors (la mienne est la v3.4). Quand je compile le code suivant avec clang++, voilà ce que j'obtiens:

    #include <iostream>
    #include <vector>
    int 
    main(void)
    {
     std::vector<int> v;
     for (int i = 0; i < 10; ++i) {
     int ii = v.at(i+10);
     std::cout << "ii = " << ii << std::endl;
     }
     std::cout << "HELLO\n";
     return 0;
    }

    La sortie est :

    terminate called after throwing an instance of 'std::out_of_range'
     what(): vector::_M_range_check
    Aborted (core dumped)
    

    Obtenir un segfault avec vec[i] serait normal, car c'est comme ça que l'API de std::vector fonctionne : at lève une exception si on est hors des limites, mais [] fonctionne « comme » un tableau C, et donc c'est au programmeur de faire gaffe.