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

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

4
Что auto && говорит нам?
Если вы читаете код, как auto&& var = foo(); где fooлюбая функция, возвращаемая по значению типа T. Тогда varlvalue типа rvalue ссылается на T. Но для чего это нужно var? Значит ли это, что нам разрешено воровать ресурсы var? Существуют ли разумные ситуации, когда вы должны использовать, auto&&чтобы сообщить читателю …

6
Как включить C ++ 11 в Qt Creator?
Название довольно информативно. Я скачал Qt Creator 2.7.0 и пытаюсь скомпилировать базовый код C ++ 11: int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } Я получаю следующую ошибку: range based for loops are not allowed in c++ 98 mode Тем не …
167 c++  qt  c++11 

8
Лямбда-захват как постоянная ссылка?
Можно ли захватить константной ссылкой в ​​лямбда-выражении? Я хочу, чтобы назначение, отмеченное ниже, не сработало, например: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], …
166 c++  c++11  lambda  c++14 

11
Как автоматически конвертировать строго типизированный enum в int?
#include <iostream> struct a { enum LOCAL_A { A1, A2 }; }; enum class b { B1, B2 }; int foo(int input) { return input; } int main(void) { std::cout << foo(a::A1) << std::endl; std::cout << foo(static_cast<int>(b::B2)) << std::endl; } Это a::LOCAL_Aто, чего пытается достичь строго типизированное перечисление, но есть …

3
Почему я должен избегать std :: enable_if в сигнатурах функций
Скотт Мейерс опубликовал содержание и статус своей следующей книги EC ++ 11. Он написал, что один пункт в книге может быть «Избегайте std::enable_ifподписей функций» . std::enable_if может использоваться в качестве аргумента функции, в качестве возвращаемого типа или в качестве шаблона класса или параметра шаблона функции для условного удаления функций или …

6
Могут ли виртуальные функции иметь параметры по умолчанию?
Если я объявляю базовый класс (или интерфейсный класс) и указываю значение по умолчанию для одного или нескольких его параметров, должны ли производные классы указывать те же значения по умолчанию, а если нет, то какие значения по умолчанию будут проявляться в производных классах? Приложение: меня также интересует, как это можно обрабатывать …
164 c++  c++11  c++03 

7
Каковы преимущества использования nullptr?
Этот фрагмент кода концептуально делает то же самое для трех указателей (безопасная инициализация указателя): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; Итак, каковы преимущества назначения указателей nullptrперед присвоением им значений NULLили 0?
163 c++  c++11  null  c++-faq  nullptr 

3
Почему преобразование из строковой константы в 'char *' допустимо в C, но недопустимо в C ++
Стандарт C ++ 11 (ISO / IEC 14882: 2011) гласит § C.1.1: char* p = "abc"; // valid in C, invalid in C++ Для C ++ все нормально, так как указатель на строковый литерал вреден, поскольку любая попытка его изменить приводит к сбою. Но почему это действительно в C? C …
163 c++  c  string  c++11  char 

7
std :: function против шаблона
Благодаря C ++ 11 мы получили std::functionсемейство упаковщиков функторов. К сожалению, я продолжаю слышать только плохие вещи об этих новых дополнениях. Наиболее популярным является то, что они ужасно медленные. Я проверил это, и они действительно сосут по сравнению с шаблонами. #include <iostream> #include <functional> #include <string> #include <chrono> template <typename …

3
В чем разница между std :: move и std :: forward
Я видел это здесь: Move Constructor вызывает базовый класс Move Constructor Может ли кто-нибудь объяснить: разница между std::moveи std::forward, желательно с некоторыми примерами кода? Как легко об этом думать, и когда использовать какой

2
Использование умных указателей для учеников
У меня проблемы с пониманием использования умных указателей в качестве членов класса в C ++ 11. Я много читал об умных указателях и думаю, что понимаю, как unique_ptrи shared_ptr/ или weak_ptrработаю в целом. То, что я не понимаю, является реальным использованием. Кажется, что все рекомендуют использовать unique_ptrкак способ идти почти …


6
Переместить захват в лямбду
Как мне перехватить по ходу (также известный как rvalue reference) в лямбда-выражении C ++ 11? Я пытаюсь написать что-то вроде этого: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };

7
std :: enable_if для условной компиляции функции-члена
Я пытаюсь получить простой пример для работы, чтобы понять, как использовать std::enable_if. Прочитав этот ответ , я подумал, что не должно быть слишком сложно привести простой пример. Я хочу использовать std::enable_ifдля выбора между двумя функциями-членами и разрешить использовать только одну из них. К сожалению, следующее не компилируется с gcc 4.7 …
156 c++  templates  g++  c++11 

3
Когда использовать std :: forward для пересылки аргументов?
C ++ 0x показывает пример использования std::forward: template<class T> void foo(T&& arg) { bar(std::forward<T>(arg)); } Когда выгодно использовать std::forwardвсегда? Кроме того, он требует использования &&в декларации параметров, действительно ли это во всех случаях? Я думал, что вам нужно передать временные функции в функцию, если она была объявлена &&в ней, так …

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