Вопросы с тегом «c++11»

Используйте этот тег для кода, который должен компилироваться как C ++ 11 (без использования каких-либо функций, представленных в C ++ 14 или более поздних версиях).

4
std :: auto_ptr в std :: unique_ptr
С появлением нового стандарта (и частей, уже доступных в некоторых компиляторах), новый тип std::unique_ptrдолжен заменить его std::auto_ptr. Их использование в точности совпадает (поэтому я могу выполнить глобальный поиск / замену в моем коде (не то, чтобы я это делал, но если бы я это сделал)) или я должен знать о …

5
Насколько хорошо Юникод поддерживается в C ++ 11?
Я читал и слышал, что C ++ 11 поддерживает Unicode. Несколько вопросов по этому поводу: Насколько хорошо стандартная библиотека C ++ поддерживает Unicode? Делает std::stringто, что должен? Как мне это использовать? Где потенциальные проблемы?
183 c++  unicode  c++11 

2
Является ли идиома safe-bool устаревшей в C ++ 11?
Этот ответ @R. Мартиньо Фернандес показывает, что идиома безопасного булла в C ++ 11 явно устарела, так как ее можно заменить простым explicit operator bool() const; согласно стандартной цитате в ответе §4 [conv] p3: Выражение e может быть неявно преобразовано в тип Tтогда и только тогда, когда объявление T t=e;правильно …


4
Можно ли использовать std :: string в constexpr?
Использование C ++ 11, Ubuntu 14.04, GCC по умолчанию . Этот код не работает: constexpr std::string constString = "constString"; ошибка: тип 'const string {aka const std :: basic_string}' переменной constexpr 'constString' не является литералом ... потому что ... 'std :: basic_string' имеет нетривиальный деструктор Можно ли использовать std::stringв constexpr? (очевидно …

3
Что такое std :: atomic?
Я понимаю, что std::atomic<>это атомный объект. Но в какой степени? Насколько я понимаю, операция может быть атомарной. Что именно означает сделать объект атомарным? Например, если два потока одновременно выполняют следующий код: a = a + 12; Тогда вся операция (скажем add_twelve_to(int)) атомная? Или внесены изменения в переменную atomic (так operator=())?

2
shared_ptr для массива: его следует использовать?
Просто небольшой вопрос по поводу shared_ptr. Это хорошая практика, чтобы использовать shared_ptrуказание на массив? Например, shared_ptr<int> sp(new int[10]); Если нет, то почему? Одна причина, о которой я уже знаю, это то, что нельзя увеличивать / уменьшать shared_ptr. Следовательно, его нельзя использовать как обычный указатель на массив.
172 c++  c++11  shared-ptr 

2
Почему лямбды могут быть лучше оптимизированы компилятором, чем обычные функции?
В своей книге The C++ Standard Library (Second Edition)Николай Йосуттис утверждает, что компилятор может оптимизировать лямбды лучше, чем простые функции. Кроме того, компиляторы C ++ оптимизируют лямбда-выражения лучше, чем обычные функции. (Стр. 213) Это почему? Я думал, что когда дело доходит до встраивания, не должно быть никакой разницы. Единственная причина, …


5
Как я могу надежно получить адрес объекта, когда оператор & перегружен?
Рассмотрим следующую программу: struct ghost { // ghosts like to pretend that they don't exist ghost* operator&() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &clyde; // darn; that's not clyde's address :'( } Как я могу получить clydeадрес? Я ищу решение, которое …

6
С ++ 11, 14, 17 или 20 вводит стандартную константу для пи?
Существует довольно глупая проблема с числом пи в C и C ++. Насколько я знаю, M_PIопределено в math.hне требуется ни одного стандарта. Новые стандарты C ++ ввел много сложных математических в стандартной библиотеке - гиперболических функций, std::hermiteи std::cyl_bessel_i, различных генераторов случайных чисел и так далее , и так далее. Приносил …

6
Использование универсальных объектов std :: function с функциями-членами в одном классе
Для одного класса я хочу сохранить несколько указателей на функции-члены одного класса в одном mapобъекте хранения std::function. Но я терплю неудачу в самом начале с этим кодом: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; Я получаю error C2064: term …

2
функция обмена друзей
В прекрасном ответе на идиому copy-and-swap- a есть фрагмент кода, который мне нужно немного помочь: class dumb_array { public: // ... friend void swap(dumb_array& first, dumb_array& second) // nothrow { using std::swap; swap(first.mSize, second.mSize); swap(first.mArray, second.mArray); } // ... }; и он добавляет записку Существуют и другие утверждения, что мы …

3
Чем «= default» отличается от «{}» для конструктора и деструктора по умолчанию?
Я первоначально разместил это как вопрос только о деструкторах, но теперь я добавляю рассмотрение конструктора по умолчанию. Вот оригинальный вопрос: Если я хочу дать моему классу деструктор, который является виртуальным, но в остальном такой же, как и тот, который генерирует компилятор, я могу использовать =default: class Widget { public: virtual …


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.