Size: a a a

2020 August 03

I

Ioann_V in pro.cxx
Mikhail Voronov
константа 32 - как раз из-за неэффективного расширения вектора в 2 раза, я бы предложил сделать отдельный тест с фактором = 1.5
У gcc 2, только если, менять реализацию ребят. Это не стоит того, учитывая что их код, мне кажется более запутанным, чем код у Folly Fbvector. Но prealloc и reserve поправлю. Да, тем кто только - только начал читать: это не то, про что был мой вопрос, но так бывает и это окейно.
источник

DS

Dmitry Sokolov in pro.cxx
Самый быстрый вариант будет assign с парой указателей  :) Один alloc + memcpy.
источник

В

Владимир in pro.cxx
Ioann_V
Ну, то есть, выходит, если я хочу сделать свой вектор stl, я не имею право выделять в конструкторе умолчательном память!?
Почему же, можно
template <typename T, typename Alloc = std::allocator<T> >class MyVectr {
....
Alloc alloc;
...
Myvec = alloc.allocate(N);
....};
источник

I

Ioann_V in pro.cxx
Dmitry Sokolov
Самый быстрый вариант будет assign с парой указателей  :) Один alloc + memcpy.
Ещё, кстати, есть прикол выравнивания памяти, а memcpy, который на x86 обособленная операция ассемблера, работает чуть медленнее(в 1/18 раза на Intel haswell, skylake) чем векторизованный ручками внрсия(по выровненной памяти). На AMD, кстати, поровну.
источник

DF

Dollar Føølish in pro.cxx
У тебя аллокация уже выровнена
источник

DF

Dollar Føølish in pro.cxx
Не будет никаких замедлений
источник

DF

Dollar Føølish in pro.cxx
Если речь о куче
источник

I

Ioann_V in pro.cxx
Dollar Føølish
У тебя аллокация уже выровнена
Я про выравнивание by 32b для avx.
источник

DF

Dollar Føølish in pro.cxx
А, здесь ты прав да
источник

ПК

Побитый Кирпич... in pro.cxx
Danya
Переслано от Danya
У меня такой вопрос про концепты, нормально ли они работают в forward decl? Я проверял, вроде норм, но может я что-то пропустил
Пример:
struct tag; // forward decl

template <typename T>
concept callable_with_tag = requires(T obj) {
   { obj(std::declval<tag>()) }'
};

struct tag {}; // definition

template <typename T>
  requires callable_with_tag<T>
void foo() {
 ...
};
Поведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
ЕМНИП там UB на каждом шагу
источник

ПК

Побитый Кирпич... in pro.cxx
Было предложение запретить для неполных типов концепты
источник

AF

Aidar Fattakhov in pro.cxx
Danya
Переслано от Danya
У меня такой вопрос про концепты, нормально ли они работают в forward decl? Я проверял, вроде норм, но может я что-то пропустил
Пример:
struct tag; // forward decl

template <typename T>
concept callable_with_tag = requires(T obj) {
   { obj(std::declval<tag>()) }'
};

struct tag {}; // definition

template <typename T>
  requires callable_with_tag<T>
void foo() {
 ...
};
Поведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
ну declval ссылку возвращает, непонятно почему не норм
источник

AF

Aidar Fattakhov in pro.cxx
Побитый Кирпич
Было предложение запретить для неполных типов концепты
так тут концепт на полный тип, просто в его определении испуользуется неполный
источник

AF

Aidar Fattakhov in pro.cxx
там работает two phase?
источник

AF

Aidar Fattakhov in pro.cxx
template <typename T>
concept callable_with_tag = requires(T obj, tag&& t) {
   { obj(move(t)) }'
};

а так можно?
источник

VS

Vlad Serebrennikov in pro.cxx
Danya
Переслано от Danya
У меня такой вопрос про концепты, нормально ли они работают в forward decl? Я проверял, вроде норм, но может я что-то пропустил
Пример:
struct tag; // forward decl

template <typename T>
concept callable_with_tag = requires(T obj) {
   { obj(std::declval<tag>()) }'
};

struct tag {}; // definition

template <typename T>
  requires callable_with_tag<T>
void foo() {
 ...
};
Поведение же будет такое, как и с инстанциациями шаблонов -- будет окончательная проверка только при самой инстанциации?
по-моему, это ifndr
http://eel.is/c++draft/temp#res-8.5.1
источник

VS

Vlad Serebrennikov in pro.cxx
Aidar Fattakhov
там работает two phase?
я не нашел доказательств обратного
источник

VS

Vlad Serebrennikov in pro.cxx
Aidar Fattakhov
template <typename T>
concept callable_with_tag = requires(T obj, tag&& t) {
   { obj(move(t)) }'
};

а так можно?
tag по-прежнему non-dependent неполный тип, поэтому я предполагаю, что нет
источник

AF

Aidar Fattakhov in pro.cxx
Vlad Serebrennikov
tag по-прежнему non-dependent неполный тип, поэтому я предполагаю, что нет
Но для ссылок никогда не нужна полнота типа если не odr usать их содержимое
источник

VS

Vlad Serebrennikov in pro.cxx
проблема в другом
источник