Крылатый
Можно.
Крылатый
А вот это хз.
Dmitry
Крылатый
Ремоут добавить через conan remote
Dmitry
Крылатый
Почему? Потом в conan install -r можно указать ремоунт нужный для пакета
Крылатый
ремоут*
Constantine
тут оффтоп вопрос, безымянный неймспейс будет значить internal linkage для функции?
Крылатый
Berkus
🐙 Antony
надо в Boost.Variant так же сделать
Крылатый
Аа... Хм
vladislav
я нипанимать
Constantine
можно ли написать макрос с именем неймспейса и обращением так, чтобы ничего не поломалось для безымянного? :)
vladislav
Berkus
🐙 Antony
constexpr массив из указателей на type erased функции
Berkus
а ремоуты можно указывать для пакаджей? или может есть в conanfile секция [remote0] и т.д.?
Constantine
О! Antony. Слушай, а какие есть продводные камни в
1. Разрешить forward declaration для nested class простейшим синтаксисом
class Some;
class Some::Nested;
2. Разрешить forward declaration с указанием предков, при этом если предок не один, то _все они_ не могут быть incomplete type.
class Base;
class Derived: public Base;
Vladislav
Dmitry
Dmitry
а без воидов заэкспандить не осилили
🐙 Antony
что именно ты видишь, разжуй плз
// Из этого создастся куча функций, см ниже
template<typename _Lhs, typename _Rhs>
void __erased_swap(void* __lhs, void* __rhs) {
using std::swap;
swap(static_cast<_Lhs>(*__lhs), static_cast<_Rhs>(*__rhs));
}
void variant<_Types>::swap(variant<_Types>& other_variant) {
...
// this.index() == other_variant.index()
using func_ptr_t = void(*)(void*, void*);
// массив функций
static constexpr func_ptr_t _S_vtable[] =
{ &__erased_swap<_Types&, _Types&>... };
func_ptr_t required_ptr = _S_vtable[this->index()]; // находим нужную функцию
required_ptr(this->storage(), other_variant.storage()); // вызываем её
}
Dmitry
Dmitry
для типов которые на входе в вариант
🐙 Antony
для каждого типа, который может хранить данный variant
Dmitry
Dmitry
в моем велосипеде тоже через кучу функций
https://github.com/reagentoo/libcxx/blob/master/include/variant.h#L192
🐙 Antony
+1
Matway
Мне пришлось полностью выкинуть variant нафиг. Выиграл 25% производительности.
Dmitry
Matway
сборку ускоряешь?
Меня не волнует сборка. Сам продукт работает на 25% быстрее. Пользователь ждёт выполнения программы три секунды вместо четырёх.
Matway
сборку ускоряешь?
Хотя может быть я не понял вопроса, потому что сам продукт тоже выполняет сборку :)
Dmitry
если только сборку самого себя выполняет тогда)
Berkus
йей
Александр
теперь можно пилить отдельные кусочки проги на D и не мучаться с двумя компиляторами?
Александр
там stdlib'ы D статически можно прилинковать?
Александр
Александр
ну это скорее риторический вопрос был
Berkus
нет, я думаю там свой бекенд и рантайм
Aidar
Хочу:
constexpr int foo(constexpr int a, int b){
static_assert(a==1);
switch(a)
{
case 1:
return do_smth(b);
}
}
Aidar
чтобы гарантировано было do_smth(b) вместо вызова этой штуки с a==1
Александр
Засунь в шаблон этот параметр
Aidar
Александр
switch на этапе компиляции соптимизируется
Aidar
там свитч тогда нельзя
Aidar
ну он не раскроется
Александр
Почему?
Aidar
не карантировано
Александр
Ээ
Александр
Константы схлопываются
Aidar
там так написано?
Александр
Где?
Aidar
в стандарте
Александр
Не знаю
Aidar
смысл тогда в constexpr функциях с параметрами
Александр
Но например if (1 == 1) точно будет оптимизировано
Aidar
емли все параметры можно через шаблон передать
Александр
Через шаблоны нельзя передать любые типы с constexpr конструктором
Aidar
я же с этого тоже бомбил
Aidar
чо литеральные то нельзя блин
Aidar
чо сложно чтоле
Berkus
я несколько лет назад копал в эту сторону и понял что лучше не надо
Berkus
тогда это было что-то в стиле "у вас опять сломался билд? это потому-то мы поменяли к чертовой матери ВСЕ апи"
Berkus
как сейчас не знаю - возможно у них стабилизировалось всё
Berkus
обычно там есть один-два упорка которые пишут прямо документацию - можно попробовать потыкать в них палочкой
Berkus
чо-то быстрый поиск показывает что с документацией всё ОЧЕНЬ плохо
Berkus
ну для gdb или lldb написать плагин проще - прямо на питоне
Berkus
(я не помню, я тебе кажется даже предлагал из gdb визуализировать сразу)
Berkus
ну там чот много писали сразу
Berkus
и со следующей версией он сломается потому что опять открутят какой-нибудь апи)
Шаурма
апстримить или апдейтить на каждый релиз не так уж и сложно
Berkus
чего