Запитання з тегом «c++11»

Використовуйте цей тег для коду, який повинен скласти як C ++ 11 (не використовуючи жодних функцій, введених у C ++ 14 або новіших версіях).

3
Як зробити умовний typedef у C ++
Я намагаюся зробити щось подібне: #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return 0; } але я отримую цю помилку: error: missing binary operator before token "(" Як я можу …
89 c++  c++11 

4
Чому немає стандартного переміщення / конструктора переміщення?
Я простий програміст. Змінні членів мого класу найчастіше складаються з типів POD та STL-контейнерів. Через це мені рідко доводиться писати оператори присвоєння або конструктори копіювання, оскільки вони реалізовані за замовчуванням. Додайте до цього, якщо я використовую std::moveна об'єктах, що не рухаються, він використовує оператор присвоєння, тобто std::moveабсолютно безпечний. Оскільки я …


3
Зняття статичного ключового слова ... не більше?
У C ++ можна використовувати staticключове слово в одиниці перекладу, щоб вплинути на видимість символу (або змінної, або оголошення функції). У n3092 це було припинено: Додаток D.2 [depr.static] Використання ключового слова static застаріло під час оголошення об’єктів у області простору імен (див. 3.3.6). У n3225 це було вилучено. Єдина стаття …
89 c++  static  c++11  standards 

3
Що таке const void?
В описі std::is_voidзазначено, що: Забезпечує значення константи члена, яке дорівнює істині, якщо T - тип void, const void, volatile void або const volatile void. Тоді що може бути const void, або a volatile void? У цій відповіді зазначено, що const voidтип повернення буде недійсним (однак компілюється у VC ++ 2015) …
89 c++  c++11  c++14 

4
Як зберігати аргументи варіатичного шаблону?
Чи можна якось зберегти пакет параметрів для подальшого використання? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } Потім пізніше: void …

7
Тепер, коли у нас є std :: array, що використання залишилось для масивів у стилі C?
std::arrayзначно перевершує масиви C. І навіть якщо я хочу взаємодіяти зі застарілим кодом, я можу просто використовувати std::array::data(). Чи є причина, по якій я хотів би коли-небудь захотіти масив старої школи?

6
Функція, що повертає лямбда-вираз
Цікаво, чи можливо написати функцію, яка повертає лямбда-функцію в C ++ 11. Звичайно, одна проблема полягає в тому, як оголосити таку функцію. Кожна лямбда має тип, але цей тип не виражається в C ++. Я не думаю, що це буде працювати: auto retFun() -> decltype ([](int x) -> int) { …
88 c++  function  c++11  lambda 

6
Чому я не можу створити вектор лямбда (того самого типу) в C ++ 11?
Я намагався створити вектор лямбда, але не вдалося: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 До рядка №2 він компілюється чудово . Але рядок №3 містить помилку компіляції : помилка: немає функції відповідності для виклику 'std :: vector <main …
88 c++  vector  lambda  c++11 

3
Безлад у ініціалізації за замовчуванням, значенням та нулем
Я дуже заплутаний щодо значення- та за замовчуванням та нульової ініціалізації. і особливо коли вони застосовують різні стандарти C ++ 03 та C ++ 11 (і C ++ 14 ). Я цитую і намагаюся викласти справді хорошу відповідь Value- / Default- / Zero- Init C ++ 98 і C ++ …
88 c++  c++11  c++14  c++03  c++98 

5
Передача спільних покажчиків як аргументів
Якщо я оголошую об'єкт, загорнутий у спільний вказівник: std::shared_ptr<myClass> myClassObject(new myClass()); тоді я хотів передати це як аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } Чи вищезгадане просто збільшує кількість посилань на shared_pt, і все круто? Або це залишає звисаючий вказівник? Ви все ще …

5
Чи існує неатомний еквівалент std :: shared_ptr? І чому в <memory> його немає?
Це дещо із двох частин питання про атомність std::shared_ptr: 1. Наскільки я можу зрозуміти, std::shared_ptrце єдиний розумний вказівник, &lt;memory&gt;який є атомним. Мені цікаво, чи є доступна неатомна версія std::shared_ptr(я не бачу нічого &lt;memory&gt;, тому я також відкритий для пропозицій за межами стандарту, таких як Boost). Я знаю, що boost::shared_ptrце також …


5
Які правильні варіанти посилання використовувати std :: thread у GCC під Linux?
Привіт, я намагаюся використовувати std::threadз G ++. Ось мій тестовий код #include &lt;thread&gt; #include &lt;iostream&gt; int main(int, char **){ std::thread tt([](){ std::cout&lt;&lt;"Thread!"&lt;&lt;std::endl; }); tt.join(); } Він компілюється, але коли я намагаюся запустити його, результат: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted Моя версія компілятора: …


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.