Вопросы по теме 'c++20'
Почему алгоритмы диапазонов несовместимы с итераторами std?
#include <vector>
#include <iostream>
#include <range/v3/all.hpp>
int main()
{
auto coll = std::vector{ 1, 2, 3 };
ranges::copy(
coll,
ranges::ostream_iterator<int>{ std::cout, ", " }
); // ok...
774 просмотров
schedule
10.10.2021
Функция оптимизирована для постоянной времени компиляции
Предположим, у меня есть функция вычисления длины вектора, у которой есть дополнительный параметр inc (он сообщает расстояние между соседними элементами). Простая реализация:
float calcLength(const float *v, int size, int inc) {
float l =...
297 просмотров
schedule
08.10.2021
лямбды в неоцененных контекстах (до C ++ 20)
В настоящее время я читаю статью P0315R1 который говорит о лямбдах в неоцененном контексте
В документе есть утверждение, которое объясняет почему лямбды не могут появляться в неоцененных контекстах (конечно, только до C ++ 20) , как показано...
839 просмотров
schedule
14.10.2021
удобный класс Vector3f
Иногда возникает необходимость иметь класс Vector3f , который имеет элементы x , y и z и может быть индексирован как массив float[3] одновременно (здесь, в SO, уже есть несколько вопросов по этому поводу).
Что-то вроде:
struct Vector3f...
1396 просмотров
schedule
16.09.2021
Можно ли скопировать сопрограммы C ++ 20?
Я играл с сопрограммами C ++ 20 и пытался переместить часть моей кодовой базы, чтобы использовать их. Однако я столкнулся с проблемой, поскольку не похоже, что новые сопрограммы можно скопировать. Объекты generator удалили конструкторы копирования...
369 просмотров
schedule
22.10.2021
если constexpr - почему полностью проверяется исключенный оператор?
Я возился с c ++ 20 consteval в GCC 10 и написал этот код
#include <optional>
#include <tuple>
#include <iostream>
template <std::size_t N, typename Predicate, typename Tuple>
consteval std::optional<std::size_t>...
685 просмотров
schedule
26.09.2021
Зарезервировано пространство имен std?
Предположим, у меня есть внешнее пространство имен, а внутри этого пространства имен есть внутреннее пространство имен std . Это разрешено или запрещено стандартом?
namespace outer {
namespace std {
// custom implementation
}
}...
67 просмотров
schedule
01.11.2021
Удовлетворенная и смоделированная концепция?
Вступление
Стандарт определяет, что каждое понятие связано с двумя предикатами:
предикат определяется: концепция удовлетворяется последовательностью аргументов шаблона, когда она оценивается как истина. Это почти синтаксическая проверка....
82 просмотров
schedule
16.10.2021
Могу ли я изменить порядок вывода аргументов шаблона для универсальной вариативной лямбды?
Возьмите следующий код, который представляет собой упрощенный пример:
template <typename F>
void foo(F f) {
//bool some = is_variadic_v<F>; // Scenario #1
bool some = true; // Scenario #2
f(int(some),...
484 просмотров
schedule
18.10.2021
Сопоставление значений времени выполнения с типами шаблонов слишком далеко
Я работаю над настраиваемой структурой FFI для языка и сталкиваюсь с проблемой необходимости создания экземпляров шаблонов во всех возможных ветвях сравнения. Когда это становится рекурсивным, количество экземпляров (и время компиляции) резко...
64 просмотров
schedule
01.11.2021
clang говорит, что вызов функции void consteval не является постоянным выражением
clang (trunk) выдает ошибку для следующего кода:
consteval void f() {}
int main()
{
f(); // error: call to consteval function 'f' is not a constant expression
// note: subobject of type 'void' is not initialized
}
в то время...
480 просмотров
schedule
22.10.2021
Должно ли предложение шаблона класса повторяться вне определений членов?
Когда член шаблона класса, который использует предложение requires , определен вне класса, gcc не жалуется, если requires не указан, тогда как clang делает.
Рассмотрим фрагмент кода ниже:
#include <concepts>
template<typename...
418 просмотров
schedule
16.09.2021
Почему при оценке в constexpr оказывается недостижимый код?
Я ожидал, что компилятор разрешит недопустимые операторы или сообщения об ошибках в недостижимом коде, включающем constexpr, если:
#include <type_traits>
#include <iostream>
struct ret_t;
struct only_declared_t;
auto test = [](auto a)...
180 просмотров
schedule
13.10.2021
Используйте концепции, чтобы проверить, существует ли глобальная функция
Я могу создать концепцию, которая проверяет существование функции-члена, называемой to_string (), которая возвращает std :: string в структуре / классе.
template<typename T>
concept method_to_string = requires(T v)
{
{ v.to_string() }...
115 просмотров
schedule
24.10.2021
Являются ли лямбды без захвата структурными типами?
P1907R1 , допускается для C + +20, введены структурные типы , которые являются допустимыми типами для параметра шаблона, не являющегося типом.
GCC и Clang принимают следующий фрагмент кода для C ++ 2a:
template<auto v>
constexpr auto...
170 просмотров
schedule
10.09.2021
Как написать руководство по дедукции для псевдонимов агрегатных шаблонов?
С помощью C ++ 20 можно создать рекомендации по дедукции для шаблона псевдонима (см. Раздел «Вычисление для шаблонов псевдонимов» по адресу https://en.cppreference.com/w/cpp/language/class_template_argument_deduction ). Тем не менее, я не мог...
213 просмотров
schedule
07.10.2021
Изменения / различия между C ++ 20 и C ++ 17, в частности ключевое слово constinit
Новая версия C ++. Т.е. C ++ 20 содержит множество изменений, удалений и новых функций. Я пытаюсь понять ключевое слово constinit. Кто-нибудь может объяснить это ясно?
Я нашел эту фразу где-то в Интернете о constinit. Переменная инициализируется...
54 просмотров
schedule
23.11.2021
Различное поведение SFINAE для std :: tuple_size_v на разных компиляторах
Рассмотрим этот код:
#include <tuple>
#include <type_traits>
#include <iostream>
template <typename T, typename = void> struct is_tuple_like : std::false_type {};
template <typename T> struct is_tuple_like<T,...
376 просмотров
schedule
20.09.2021
Увеличение volatile в C ++ 20 с операциями с volatile устарело
В C ++ 20 исключены некоторые операции с типами volatile (после P1152 ).
Следующий код, действовавший до C ++ 20:
void busyLoop(std::size_t count) {
for (volatile size_t counter = 0; counter < count; ++counter);
}
теперь генерирует...
223 просмотров
schedule
10.09.2021
ошибка: выведенный тип класса "кортеж" в типе возвращаемого значения функции
Чем я занимаюсь
Я практикую C ++ через 3 года. Мне нужно было учиться быстро и широко, поэтому этот пример, который я пытаюсь решить, может показаться вам странным.
Я использую c++20 , gcc 10.2 .
Я хотел сделать функцию перечисления Python...
266 просмотров
schedule
06.10.2021