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

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

2
Який із двигунів випадкових чисел <випадкових> насправді слід використовувати на практиці? std :: mt19937?
Припустимо, ви хочете використовувати засоби C ++ &lt;random&gt;у практичній програмі (для деякого визначення поняття "практичний" - обмеження тут є частиною цього питання). У вас приблизно такий код: int main(int argc, char **argv) { int seed = get_user_provided_seed_value(argc, argv); if (seed == 0) seed = std::random_device()(); ENGINE g(seed); // TODO: proper …
21 c++  c++11  random 

4
Як викликати правильний конструктор типу шаблону?
У наступному коді, як я можу змусити коментований рядок працювати так само, як і рядок прямо над ним? Я хотів би зробити це загальним кодом, який викликає відповідний конструктор шаблону Type. #include &lt;string&gt; #include &lt;iostream&gt; template &lt;typename Type&gt; struct Class { Type data; Class(Type data) : data(data) { } }; …

4
Постійний перерахунок C ++ 11
Чи є спосіб перевірити в C ++ 11, якщо перерахунок є безперервним ? Цілком справедливо давати значення перерахунків, яких немає. Чи може бути така функція, як ознака типу в C ++ 14, C ++ 17 або, можливо, C ++ 20, щоб перевірити, чи перераховується перерахунок? Це потрібно використовувати в static_assert. …
17 c++  c++11  c++14  c++17  c++20 

2
Це старий конструктор стилю C ++?
Ось фрагмент коду С ++. У цьому прикладі багато блоків коду виглядають як виклики конструктора. На жаль, блокового коду №3 немає (Ви можете перевірити це за допомогою https://godbolt.org/z/q3rsxn та https://cppinsights.io ). Я думаю, що це стара позначка C ++, і це могло б пояснити введення нової нотації конструкції C ++ …
17 c++  c++11 

3
Варіатичні шаблони: розгортайте аргументи в групах
У мене є функція, яка бере два аргументи: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } І варіант, який повинен пересилати свої аргументи парами: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % 2 == …

2
Чому std :: swap не позначений constexpr перед C ++ 20?
В C ++ 20, std::swap стає constexprфункцією. Я знаю, що стандартна бібліотека дійсно відставала від мови в маркуванні речей constexpr, але до 2017 року &lt;algorithm&gt;була в значній мірі контекспр, як і купа інших речей. І все ж -std::swap не було. Я туманно пам'ятаю, що там був якийсь дивний мовний дефект, …

3
Сортування вектора у порядку зменшення у межах двох діапазонів
Скажіть, у мене є вектор цілих чисел: std::vector&lt;int&gt; indices; for (int i=0; i&lt;15; i++) indices.push_back(i); Потім я сортую це у порядку зменшення: sort(indices.begin(), indices.end(), [](int first, int second) -&gt; bool{return indices[first] &gt; indices[second];}) for (int i=0; i&lt;15; i++) printf("%i\n", indices[i]); Це призводить до наступного: 14 13 12 11 10 9 …

1
Чи можу я перерахувати-ініціалізувати std :: vector із ідеальним пересиланням елементів?
Я помітив, що ініталізація сукупного списку std :: vector виконує ініціалізацію копіювання, коли переміщення є більш застосовною. У той же час кілька emplace_backs роблять те, що я хочу. Я міг тільки придумати це недосконале рішення написання функції шаблону init_emplace_vector. Однак це оптимально лише для не явних однозначних конструкторів. template &lt;typename …

3
Чому розмірність масиву є частиною його типу?
Читаючи книгу букваря C ++, я натрапив на це твердження: "Кількість елементів у масиві є частиною типу масиву". Тому я хотів дізнатися, використовуючи наступний код: #include&lt;iostream&gt; int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout&lt;&lt;typeid(Array1).name()&lt;&lt;std::endl; //prints A4_c std::cout&lt;&lt;typeid(Array2).name()&lt;&lt;std::endl; //prints A6_c return 0; } …
14 c++  arrays  c++11 

3
Виконати функцію всередині шаблону функції лише для тих типів, у яких визначена функція
У мене є шаблон функції, який приймає багато різних типів як його введення. З цих типів лише один з них має getInt()функцію. Отже, я хочу, щоб код запускав функцію лише для цього типу. Просимо запропонувати рішення. Дякую #include &lt;type_traits&gt; #include &lt;typeinfo&gt; class X { public: int getInt(){ return 9; } …

4
Чи пояснення розслабленого замовлення помилкове в cppreference?
У документації std::memory_orderна сайті cppreference.com є приклад розслабленого замовлення: Розслаблене замовлення Атомні операції з тегом memory_order_relaxedне є операціями синхронізації; вони не нав'язують порядок серед паралельних доступу до пам'яті. Вони гарантують лише атомність та послідовність порядку модифікації. Наприклад, спочатку x і y дорівнює нулю, // Thread 1: r1 = y.load(std::memory_order_relaxed); // …

1
Можлива помилка компілятора в MSVC
Наступний код компілюється з gcc та clang (та багатьма іншими компіляторами C ++ 11) #include &lt;stdint.h&gt; typedef int datatype; template &lt;typename T&gt; struct to_datatype {}; template &lt;&gt; struct to_datatype&lt;int16_t&gt; { static constexpr datatype value = 1; }; template &lt;typename T&gt; class data { public: data(datatype dt = to_datatype&lt;T&gt;::value) {} }; …
13 c++  c++11  visual-c++ 

1
Чому типи виразів змінювались у C ++ між версіями?
Я намагаюся зрозуміти типи виразів C ++ і чим більше я читаю, тим я був більш розгубленим, оскільки мені здається, що проект C ++ дуже важкий для засвоєння, і тому віддаю перевагу іншим ресурсам, але вони або суперечать один одному, або не враховують, що формулювання та визначення між версіями C …
13 c++  c++11  c++14  c++17  c++20 

2
Чому тут змінна enum - релевантна?
Приклад: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int&amp; num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Я отримую таку помилку, коли компілюю це: &lt;source&gt;: In function 'int main()': &lt;source&gt;:16:9: error: cannot bind non-const lvalue reference of type 'unsigned …

3
Різниця між std :: resize (n) та std :: shrink_to_fit у C ++?
Я натрапив на ці твердження: resize(n)- Змінює розмір контейнера так, щоб він містив 'n' елементів. shrink_to_fit()- Зменшує ємність контейнера, щоб відповідати його розмірам, і знищує всі елементи понад ємності. Чи є значна різниця між цими функціями? вони потрапляють під вектори в c ++

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