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

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

2
Какой из <случайных> механизмов случайных чисел следует использовать на практике? станд :: 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, является ли перечисление непрерывным ? Полностью допустимо указывать значения enum, которых нет. Есть ли такая особенность, как черта типа в C ++ 14, C ++ 17 или, может быть, C ++ 20, чтобы проверить, является ли enum непрерывным? Это будет использоваться в …
17 c++  c++11  c++14  c++17  c++20 

2
Это старый конструктор в стиле C ++?
Здесь кусок кода C ++. В этом примере многие блоки кода выглядят как вызовы конструктора. К сожалению, блочного кода № 3 нет (это можно проверить с помощью https://godbolt.org/z/q3rsxn и https://cppinsights.io ). Я думаю, что это старая нотация C ++, и она может объяснить введение новой нотации конструкции C ++ 11 …
17 c++  c++11 

3
Variadic шаблоны: раскрыть аргументы в группах
У меня есть функция, которая принимает два аргумента: 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 …

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 8 …

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

1
Можно ли инициализировать список std :: vector с идеальной пересылкой элементов?
Я заметил , что совокупный список инициализационных ЗПП :: вектор выполняет копирование инициализации , когда движение более применимо. В то же время, несколько emplace_backs делают то, что я хочу. Я мог только придумать это несовершенное решение написания шаблонной функции init_emplace_vector. Впрочем, это оптимально только для неявных однозначных конструкторов. template &lt;typename …

3
Почему размерность массива является частью его типа?
Читая книгу по C ++ Primer, я натолкнулся на следующее утверждение: «Количество элементов в массиве является частью типа массива». Поэтому я хотел узнать, используя следующий код: #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
Является ли объяснение расслабленного порядка ошибочным в сравнении?
В документации std::memory_orderна cppreference.com есть пример непринужденного заказа: Расслабленный заказ Маркированные атомарные операции memory_order_relaxedне являются операциями синхронизации; они не навязывают порядок между одновременными обращениями к памяти. Они гарантируют только атомарность и согласованность порядка модификации. Например, с х и у изначально ноль, // Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, …

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 int&amp;' …

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.