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

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

5
Чи варто використовувати std :: функцію або покажчик функції на C ++?
Чи реалізувати функцію зворотного дзвінка в C ++, чи повинен я все-таки використовувати вказівник функції C: void (*callbackFunc)(int); Або я повинен використовувати std :: функцію: std::function< void(int) > callbackFunc;
142 c++  function  c++11  callback  std 

2
Чи є #pragma колись частиною стандарту C ++ 11?
Традиційно стандартним та портативним способом уникнути декількох включень заголовків у C ++ було / є використання #ifndef - #define - #endifсхеми директив попереднього компілятора, яка також називається макрозахисною схемою (див. Фрагмент коду нижче). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... #endif У більшості реалізацій / компіляторів (див. Малюнок нижче), однак, є більш …

5
Коли я повинен використовувати std :: thread :: detach?
Десь мені доведеться скористатися, std::threadщоб пришвидшити застосування. Я також знаю, join()чекає, поки нитка завершиться. Це легко зрозуміти, але яка різниця між дзвінкамиdetach() та не дзвінками? Я думав, що без detach() цього методу нитка буде працювати, використовуючи нитку самостійно. Не відокремлюється: void Someclass::Somefunction() { //... std::thread t([ ] { printf("thread called …
140 c++  c++11  stdthread 

12
Які нові можливості додають визначені користувачем літерали до C ++?
C ++ 11 представляє визначені користувачем літерали , які дозволять введення нового буквального синтаксису на основі існуючих литералов ( int, hex, string, float) , так що будь-який тип буде мати можливість буквального уявлення. Приклади: // imaginary numbers std::complex<long double> operator "" _i(long double d) // cooked form { return std::complex<long …


3
Чи ефективний C ++ все ще ефективний?
З того, що я побачив у цій публікації, я вирішив почати читати книгу « Ефективний C ++» . Але тепер, коли через C ++ 11 з’явилося багато нових функцій і змінилося декілька хороших практик, я не впевнений, чи це насправді хороша ідея. Чи з’явилось поява C ++ 11 будь-якої поради, …

2
Що я можу зробити з переміщеним об'єктом?
Чи визначає стандарт точно, що я можу зробити з об'єктом після його переміщення? Раніше я думав, що все, що ти можеш зробити з переміщеним об'єктом - це знищити його, але цього було б недостатньо. Наприклад, візьміть шаблон функції, swapяк визначено у стандартній бібліотеці: template <typename T> void swap(T& a, T& …

9
Чи є насправді причина, чому перевантажені && та || не коротке замикання?
Коротке замикання поведінки операторів &&і ||є дивовижним інструментом для програмістів. Але чому вони втрачають таку поведінку при перевантаженні? Я розумію, що оператори - це лише синтаксичний цукор для функцій, але оператори boolмають таку поведінку, чому його слід обмежувати лише цим типом? Чи є за цим технічні міркування?

10
Як емуляцію ініціалізації масиву C "int arr [] = {e1, e2, e3, ...}" з поведінкою std :: array?
(Примітка. Це питання стосується того, що не потрібно вказувати кількість елементів і все ж дозволяти вкладеним типам безпосередньо ініціалізувати.) У цьому питанні розглядаються питання, які залишилися для масиву С, як int arr[20];. У своїй відповіді @James Kanze показує одну з останніх оплотів масивів C, це унікальні характеристики ініціалізації: int arr[] …

15
Зручно оголошувати рядки компіляційного часу в C ++
Уміння створювати та маніпулювати рядками під час компіляції в C ++ має кілька корисних програм. Хоча в C ++ можна створити рядки часу компіляції, процес дуже громіздкий, оскільки рядок потрібно оголосити як різноманітну послідовність символів, наприклад using str = sequence<'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', …

5
Як я закінчую нитку в C ++ 11?
Мені не потрібно правильно завершувати потік або змушувати його реагувати на команду "завершити". Мені цікаво завершити потік насильно за допомогою чистого C ++ 11.


13
Як розгорнути кортеж на аргументи варіативної функції шаблону?
Розглянемо випадок шаблонної функції з аргументами варіативного шаблону: template<typename Tret, typename... T> Tret func(const T&... t); Тепер у мене є кортеж tцінностей. Як зателефонувати func()за допомогою значень кортежу як аргументів? Я читав про bind()об’єкт функції, з call()функцією, а також про apply()функцію в деяких інших застарілих документах. Здається, реалізація GNU GCC …
135 c++  c++11  arguments  tuples 

6
Генеруйте випадкові числа за допомогою випадкової бібліотеки C ++ 11
Як випливає з назви, я намагаюся знайти спосіб генерації випадкових чисел за допомогою нової <random>бібліотеки C ++ 11 . Я спробував це з цим кодом: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); Проблема з кодом, який я маю, полягає в тому, що кожного разу, коли я його компілюю і запускаю, він завжди …
135 c++  c++11  random  range 

4
Чи можна визначити тип параметра і тип повернення лямбда?
Враховуючи лямбда, чи можна з'ясувати, що це тип параметра та тип повернення? Якщо так, то як? В основному, я хочу, lambda_traitsщо його можна використовувати наступними способами: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long Мотивація полягає в …

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