Описание тега c++17
C++17 - это название стандарта C++, утвержденного в 2017 году. Он основан на предыдущем стандарте C++14, улучшая основной язык и стандартную библиотеку, а также добавляя несколько новых языковых функций.
2
ответа
Почему мой второй фрагмент ниже показывает неопределенное поведение?
И то и другое clang а также g++ похоже, что он соответствует последней версии параграфа [expr.const]/5 в стандарте C++. Следующий фрагмент выводит 11 для обоих компиляторов. Смотрите живой пример: #include <iostream> void f(void) { static int …
01 янв '16 в 13:09
1
ответ
Enum и std::get
Я хочу использовать перечисление scoped с std::get для доступа к объекту, хранящемуся в std::vector Из Effective Modern C++ я использую версию Item 10 для приведения типа enum к базовому_типу_типа, который можно использовать с std::get template<t…
20 сен '18 в 17:32
1
ответ
Вызов функции-инварианта аргумента-перестановки f(i++, i++)
Предположим, у меня есть функция foo(x, y, z) это инвариант относительно всех перестановок его аргументов. У меня тоже есть итератор itтак, что итераторы it, it + 1 а также it + 2 может быть разыменовано. Это нормально писать ... = foo(*it++, *it++,…
20 сен '18 в 17:47
0
ответов
C++17 typealias устраняет возможность вывода аргументов шаблона класса
Вывод аргумента шаблона класса C++17 работает просто отлично, но я не могу создать псевдоним типа для такого типа, где работает вывод аргумента шаблона класса. Есть ли какие-то особые настройки для использования нужного, чтобы он работал? Здесь у ме…
24 авг '18 в 07:58
1
ответ
`std::any_cast` возвращает копию
Я читал документацию для std::any_cast и я нахожу странным, что в API есть приведение, которое либо возвращает значение удерживаемому объекту, либо указатель на него. Почему бы не вернуть ссылку? Копия должна выполняться каждый раз, когда функция вы…
28 янв '17 в 02:50
1
ответ
Ошибка в gcc с параметрами const& template?
Рассмотрим этот код: #include <type_traits> template < int > struct II { }; template < const int& > struct RR { }; template < template <auto> typename Class, typename Type > struct Check : std::false_type { }; templ…
09 фев '17 в 09:43
3
ответа
Неустранимая ошибка: файл 'charconv' не найден в clang 6.0 с -std= C++17
Недавно я хотел использовать from_chars из с ++17. Посмотрел http://en.cppreference.com/w/cpp/utility/from_chars и нашел этот код на этой странице: #include <iostream> #include <charconv> #include <array> int main() { std::array<…
03 апр '18 в 22:05
1
ответ
Вычет шаблона для аргумента шаблона по умолчанию
У меня есть класс, который выглядит примерно так: template <class T = char> struct C { T value; }; До C++14, когда я хотел использовать его с аргументом шаблона по умолчанию, мне всегда приходилось указывать пустые угловые скобки: void f() { C…
11 май '18 в 13:40
1
ответ
SFINAE: удалить функцию с тем же прототипом
Интересно, в чем разница между этим кодом, который работает: #include <type_traits> #include <iostream> template<typename T> using is_ref = std::enable_if_t<std::is_reference_v<T>, bool>; template<typename T> usin…
20 май '18 в 23:41
1
ответ
Сопоставление параметров шаблона шаблона с аргументами по умолчанию
Этот вопрос связан с этим и должен быть с конкретными случаями ниже template<class T, class U = T> class B { }; template <class ... Types> class C { }; template<template<class> class P> class X { }; X<B>{ }; // OK X<…
22 сен '18 в 19:42
2
ответа
Печать адресов элементов вектора<char>показывает мусор
Рассматривать: #include <vector> #include <string> #include <iostream> using namespace std; int main() { vector<char> vChar; vChar.push_back('a'); vChar.push_back('b'); vChar.push_back('c'); vChar.push_back('d'); vector<in…
19 сен '18 в 05:10
0
ответов
GitLab CI runner server - установить G++5
Я пишу код с использованием C++17. Это требует по крайней мере G++5 для компиляции. Я также хотел бы использовать Continuous Integration для запуска юнит-тестов, но у меня проблема с версией ядра. мой .gitlab-ci.yml выглядит так: before_script: - ec…
11 июл '18 в 18:20
0
ответов
Отсутствуют стандартные компоненты библиотеки
В настоящее время я работаю над проектом с C++17, и я пытаюсь использовать определенные библиотеки (такие как variant а также optional). Тем не менее, моя IDE не может найти их (я использую CLion). Что было бы лучшим способом для устранения этой про…
18 июл '18 в 18:33
3
ответа
Как std:: function<std:: option <T>()> совместима с лямбда-кодом, возвращающим T?
Я могу создать std::function это возвращает std::optional<Foo> и назначил лямбду, которая возвращает Foo к этому. Может кто-нибудь подробно объяснить, как это возможно? простой пример: #include <iostream> #include <optional> #inclu…
30 июл '18 в 12:33
1
ответ
Передача функции указателя на член в шаблон
Интересно, как я могу передать указатель на нестатическую функцию-член в шаблон? Вот упрощенный код: template<typename, typename> struct contains; template<typename T, typename R, typename... Ts> struct contains<T, R(Ts...)> { stat…
28 июн '18 в 16:44
2
ответа
Почему в выводе моей сборки есть две реализации деструктора?
А также objdump моего файла.o показывает, что у меня есть два разных деструктора для одного и того же класса. Зачем? Disassembly of section .text._ZN1AD0Ev: 0000000000000000 <_ZN1AD0Ev>: 0: 53 push %rbx 1: be 00 00 00 00 mov $0x0,%esi 6: 48 89…
15 июн '17 в 03:40
0
ответов
Кортежи и ostreams: когда код ломается
При работе с кортежами и попытке вывести их значения на консоль с помощью ostream вы не можете напрямую использовать цикл для этого, поскольку вы можете получить доступ только к элементам кортежа из std::get, который ожидает постоянную времени компи…
08 апр '18 в 23:07
3
ответа
Почему sfinae включен, если constexpr не разрешен?
Идиома обнаружения работает следующим образом template<typename T, typename = void> struct has_foo {static constexpr bool value = false;}; template<typename T> struct has_foo<T, std::void_t<decltype(&T::foo)>> {static con…
06 июн '17 в 16:21
3
ответа
C++17: использование std::option для оценки, содержит ли enum значение
Я хотел бы проверить во время компиляции, если различные перечисления содержат данное значение, поэтому я написал следующее: #include <optional> enum class test_enum : int { VALUE_0 = 0, VALUE_1 = 1 }; // Template function to perform check tem…
03 окт '18 в 18:19
4
ответа
Надежны ли экспериментальные возможности современного C++ для долгосрочных проектов?
У меня есть проект, который в настоящее время использует C++11/14, но требует что-то вроде std::filesystem, который доступен только в C++17, и, следовательно, у меня нет возможности использовать его в настоящее время. Я вижу, однако, что он доступен…
10 апр '17 в 08:41