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

14
Почему размерность массива является частью его типа?

Читая книгу по C ++ Primer, я натолкнулся на следующее утверждение: «Количество элементов в массиве является частью типа массива». Поэтому я хотел узнать, используя следующий код: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'};...

14
Можно ли инициализировать список std :: vector с идеальной пересылкой элементов?

Я заметил , что совокупный список инициализационных ЗПП :: вектор выполняет копирование инициализации , когда движение более применимо. В то же время, несколько emplace_backs делают то, что я хочу. Я мог только придумать это несовершенное решение написания шаблонной функции init_emplace_vector....

14
Почему std :: swap не помечен как constexpr до C ++ 20?

В C ++ 20 std::swapстановится constexprфункцией. Я знаю, что стандартная библиотека действительно отстала от языка в маркировке вещей constexpr, но к 2017 году <algorithm>была в значительной степени консекстом, как и куча других вещей. Пока - std::swapнет. Я смутно помню, что был какой-то...

13
Почему типы выражений менялись в C ++ между версиями?

Я пытаюсь понять типы выражений C ++, и чем больше я читаю, тем больше я запутался, поскольку нахожу черновик C ++ очень сложным для восприятия и поэтому предпочитаю другие ресурсы, но они либо противоречат друг другу, либо не учитывают, что формулировка и определение между версиями C ++ сильно...

13
Возможная ошибка компилятора в MSVC

Следующий код компилируется с помощью gcc и clang (и многих других компиляторов C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template...

13
Является ли объяснение расслабленного порядка ошибочным в сравнении?

В документации std::memory_orderна cppreference.com есть пример непринужденного заказа: Расслабленный заказ Маркированные атомарные операции memory_order_relaxedне являются операциями синхронизации; они не навязывают порядок между одновременными обращениями к памяти. Они гарантируют только...

13
Выполнять функцию внутри шаблона функции только для тех типов, для которых определена функция

У меня есть шаблон функции, который принимает много разных типов в качестве входных данных. Из этих типов только один из них имеет getInt()функцию. Поэтому я хочу, чтобы код запускал функцию только для этого типа. Пожалуйста, предложите решение. Спасибо #include <type_traits> #include...

11
Вызов лямбда неоднозначен, несмотря на явное указание типа возврата

Перегруженная функция должна принимать оба функтора, учитывая, что тип лямбды можно разрешить (можно преобразовать в std::function(пожалуйста, исправьте меня, если я ошибаюсь). Вопрос в том, почему ниже приведена ошибка компиляции, несмотря на то, что лямбда-тип явно определен? ( [&]() ->...

11
Как узнать, какие функции генерирует компилятор?

Я знаю о сгенерированных компилятором функциях, правило трех и правило пяти. В реальных сценариях может оказаться нетривиальным выяснить, какие именно функции, сгенерированные компилятором (конструкторы, операторы присваивания, деструктор) были фактически созданы компилятором. Есть ли способ...

11
Разница между std :: resize (n) и std :: shrink_to_fit в C ++?

Я сталкивался с этими утверждениями: resize(n)- Изменяет размер контейнера так, чтобы он содержал «n» элементов. shrink_to_fit()- Уменьшает емкость контейнера до его размера и уничтожает все элементы, превышающие емкость. Есть ли существенная разница между этими функциями? они попадают под векторы...

10
Почему не обязательно использовать typename для зависимых типов в следующем случае?

Я читал об удалении ссылки типа здесь . Это дает следующий пример: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout...

10
Вывод типов аргументов шаблона шаблона C ++

У меня есть код, который находит и распечатывает совпадения шаблона, как проходя через контейнер строк. Печать выполняется в функции foo, которая является шаблонной. Код #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string>...

9
Могу ли я использовать собственный распределитель для std :: array для безопасных криптографических ключей?

Я знаю, std::arrayчто полностью распределен в стеке, но этот вопрос мотивирован проблемами безопасности, которые требуют двух вещей: Данные в std::arrayнуле или будут рандомизированы при уничтожении Данные в std::arrayбудут заблокированы , так что они никогда не попадут на диск ни в случае сбоя, ни...

9
Скопировать конструктор с неконстантным аргументом, предложенным правилами безопасности потока?

У меня есть обертка для какого-то унаследованного кода. class A{ L* impl_; // the legacy object has to be in the heap, could be also unique_ptr A(A const&) = delete; L* duplicate(){L* ret; legacy_duplicate(impl_, &L); return ret;} ... // proper resource management here }; В этом...

9
Как получить количество элементов в std :: array <T, N>, не создавая его экземпляр?

Есть std::array<T, N>::size(), но это не статично, поэтому требуется экземпляр std::array. Есть ли способ получить значение, которое он возвращает (который является Nиз std::array<T, N>) без необходимости создания экземпляра массива? Для обычного массива я мог бы использовать sizeof, но...