Вопросы по теме 'c++14'

Лямбда-функция с количеством аргументов, определяемым во время компиляции
Я хотел бы объявить лямбда-функцию ровно с N параметрами, где N — аргумент шаблона. Что-то типа... template <int N> class A { std::function<void (double, ..., double)> func; // exactly n inputs }; Я не...
1209 просмотров
schedule 02.01.2024

Есть ли способ проверить, указывает ли std::function на член действительного объекта?
Позвольте мне продемонстрировать, что я имею в виду. #include <functional> #include <iostream> class MyClass { private: int number; public: MyClass() { number = 0; } void printNumber() {...
1194 просмотров
schedule 26.01.2024

Всегда ли безопасно использовать автоматическое определение возврата типа функции C ++ 14 вместо std :: common_type?
Я обновляю часть своей кодовой базы с C ++ 11 до C ++ 14. У меня есть несколько математических служебных функций, которые принимают несколько входных аргументов и возвращают одно значение типа std::common_type_t<...> . Думаю заменить явное...
379 просмотров
schedule 12.02.2024

Как правильно усовершенствовать геттерные функции?
Я создаю библиотеку JSON для С++ 14 и стараюсь по возможности использовать семантику перемещения. В моем классе Value есть несколько сеттеров и геттеров, которые всегда пытаются перемещаться, когда это возможно: template<class T> void...
950 просмотров
schedule 16.10.2023

Почему шаблоны позволяют использовать функции constexpr с конструкторами, отличными от constexpr?
Использование C ++ 14. Почему это будет компилироваться: template<unsigned N> constexpr bool foo() { std::array<char, N> arr; return true; } а не это? constexpr bool foo() { std::array<char, 10> arr; //...
638 просмотров
schedule 12.06.2024

рекурсивная структура с использованием std::deque и других контейнеров
Я начинаю определять узел дерева. Это неполный тип ( struct / class ) на момент определения поля «дети». Или другой способ - использовать стирание шрифта, но, на мой взгляд, это некрасиво. Еще один способ - использовать указатели, но это все еще не...
51 просмотров
schedule 07.07.2022

Униформа и инициализация значения
Я пытаюсь использовать инициализацию значения для членов с инициализацией значения для конструкторов (я не знаю, действительно ли я использую хорошие термины...) Итак... Когда я определяю: struct A { int a_; }; Я могу использовать: A...
165 просмотров
schedule 30.08.2022

Не определено, если constexpr?
Этот маленький фрагмент кода сводит меня с ума: struct my_struct { private: static constexpr const char* some_string() noexcept; public: my_struct() = default; private: std::string _my_string{some_string()}; } //in cpp constexpr const...
53 просмотров
schedule 24.05.2024

Конструктор и конструктор-копия для класса, содержащего объединение с нетривиальными членами
Я пытаюсь реализовать собственный вариантный тип, который использует объединение для хранения данных различных типов. В поле type_id я планирую сохранить, какого типа данные, хранящиеся в объединении. Союз содержит нетривиальные члены. Вот моя...
5067 просмотров
schedule 12.10.2023

C++ Преобразование пакета параметров типов в пакет параметров индексов
Есть ли способ преобразовать пакет параметров типов в пакет параметров целых чисел от 0 до sizeof...(Types) ? В частности, я пытаюсь сделать что-то вот это: template <size_t... I> void bar(); template <typename... Types> void...
861 просмотров

Является ли вызов std::min в пустом списке инициализаторов (и явное указание типа) неопределенным поведением?
Вызов std::min() с пустым списком инициализаторов обычно не компилируется (все вопросы можно сформулировать так же и для std::max() ). Этот код: #include <iostream> #include <algorithm> int main() { std::cout <<...
1128 просмотров

Почему std::algorithms не constexpr, а что может быть?
Почему нет std::algorithm методов constexpr ? Если я правильно понимаю новые правила C++14, многие из этих методов могут быть constexpr . Например, почему std::find не может быть constexpr ? static constexpr std::array<char, 4>...
3763 просмотров
schedule 06.06.2024

Ошибка привязки make_unique
У меня проблемы с использованием std::bind с std::make_unique . У меня есть объект, конструктору которого я передаю фабричные функции для создания std::unique_ptr объектов другого типа класса. Используя VS2013, это работает: Tester...
586 просмотров
schedule 16.11.2022

Почему шаблон с выведенным типом возвращаемого значения нельзя перегружать другими его версиями?
Почему следующие два шаблона несовместимы и не могут быть перегружены? #include <vector> template<typename T> auto f(T t) { return t.size(); } template<typename T> auto f(T t) { return t.foobar(); } int main() {...
514 просмотров
schedule 14.03.2024

Как этот код может быть constexpr? (std :: chrono)
В стандарте P0092R1 Говард Хиннант написал: template <class To, class Rep, class Period, class = enable_if_t<detail::is_duration<To>{}>> constexpr To floor(const duration<Rep, Period>& d) { To t =...
1174 просмотров
schedule 25.10.2023

Как правильно найти Heisenbug?
После некоторой модификации ресурса (изображения) моя программа получает случайный сбой (0xC0000005). Я знаю, что это происходит из-за плохого управления памятью, но я не могу найти, откуда это берется, по двум причинам: во-первых, я не использую...
1116 просмотров
schedule 15.07.2022

Перегруженный оператор вывода не найден для выражения Boost.Spirit
Это продолжение этих вопросов и ответов . Теперь у меня есть несколько структур данных в namespace ast , разделенных на два подпространства имен ( algebraic и numeric ), которые соответствуют двум различным форматам, распознаваемым грамматикой....
290 просмотров

C++ возвращает несколько значений со структурой
Я знаю, что std::tuple  – это допустимый способ вернуть несколько переменных разных типов из функции, как указано в выступление Херба Саттера примерно в 1:31:00 (Этот пример кода мой, а не из видео) auto get_tuple() { return...
345 просмотров
schedule 14.07.2022

Как правильно исправить неоднозначность разрешения шаблона?
Предположим, я написал: template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>> void foo() { std::cout << "T is integral." << std::endl; } template <typename T> void foo() { std::cout...
1412 просмотров
schedule 09.09.2022

Инициализировать std::array пакетом параметров из произвольного индекса
Инициализация std::array вариативными аргументами шаблона, начиная с заданного индекса, может быть выполнена следующим образом: #include <array> template <typename T, size_t N> struct A { template <typename ... Ts>...
2877 просмотров