• Mutable или T* const?

    seagull
    @seagull
    mutable показывает что с нашей точки зрения атрибут не сильно важен и не влияет на константность класа. Тоесть например, если мы передаем класс аргументом в функцию, например, то ничего страшного не произойдет, если атрибуты mutable будуть изменены. Тоесть при использовании mutable нужно ответить на вопрос: Содержит ли атрибут очень важную информацию или нет.

    А что касается с T* const то в данной ситуации это и есть костыль. Используя mutable мы декларируем, что собираемся изменять атрибут, а вот T* const этого как раз не говорят. А потом будет тяжело разобраться кто есть кто.
    Ответ написан
    Комментировать
  • Mutable или T* const?

    @rtorsten
    Есть еще вариант — const_cast.
    Ответ написан
    2 комментария
  • Ошибка в обращении к map через оператор []?

    @gribozavr
    Во втором случае не работает потому что char * сраниваются std::map'ом как указатели. Естественно, две разных строки (одна константа, одна из txePacket), пусть и имея одинаковые значения, находятся по разным адресам и поэтому как указатели не равны.

    Остаётся вопрос, почему в первом случае работает. В качестве оптимизации компилятор объединяет все одинаковые строковые константы в одну с одним и тем же адресом в секции только для чтения. Поэтому литеральная строка «foo» в любом месте одной единицы трансляции будет иметь один и тот же адрес.

    char *x = "..."; так нельзя. Литеральные строки — это const char *.
    Ответ написан
    Комментировать
  • Уменьшение количества новых постов на Хабр?

    andruxin
    @andruxin
    buger, начините с себя
    Ответ написан
    Комментировать