Igor
о https://github.com/AnthonyCalandra/modern-cpp-features/blob/master/README.md
баян?
Berkus
Крылатый
Прелюбопытнейшая дискуссия, товарищи плюсачи. https://www.reddit.com/r/cpp/comments/6mpbtr/why_are_stdtuples_constructors_all_noexceptfalse/
Constantine
а можно class member function добавить модификатор "нельзя использовать this"? :)
Constantine
как const и && только this=delete
Constantine
именно
Matwey
static
Nik
а зачем?
Berkus
да, конечно, объяви ее static
Constantine
static
Вы можете самостоятельно понять, что это не то же самое. Это не вопрос в supapro :)
Constantine
Я не могу делать виртуальную static функцию
Berkus
но в целом это именно то что нужно, static + ручной dispatch
Constantine
Я могу сделать аналогичную вещь через RTTI и статическую функцию, да, но это наркомания
Berkus
можно еще внутри лямбду исползовать которая this не капчурит
Berkus
virtual void test() { []{ no this bitches }(); }
Constantine
это часть сигнатуры метода, как и const
Constantine
этот метод в потомках не имеет права использовать this явно
Constantine
Berkus
*yawn* ну сделай ему сигнатуру сам
Berkus
сигнатура это ж просто буковки
Constantine
у меня сейчас это просто синтаксис генератора, не поддерживаемый плюсами
Constantine
так что я уже сделал сам, да
Constantine
по сути это виртуальный атрибут класса
Berkus
Constantine
такое чувство, что ты пишешь на сях, а не на плюсах)
Constantine
потому что на самом деле в плюсах есть только одна действительно стоящая вещь - компилятор можно заставлять делать проверки
Berkus
и эта вещь стоит всего остального, да
Constantine
по крайней мере эта вещь, из-за которой C++ не безнадежен
Berkus
ты мог бы писать на хаскеле и не иметь этих проблем, ныл бы в другой чатик
Konstantin
Виталий
🐙 Antony
а можете пример в виде кода написать? А то я всё еще не догоняю
Constantine
struct ReflectionType {
virtual ~ReflectionType() {};
virtual bool isMoveConstructible() /*this(delete)*/ = 0;
};
std::unique_ptr<ReflectionType> ReflectionTypeByName(std::string name) {
//фабрика
}
template <typename Type>
struct KnownCppType: ReflectionType {
virtual bool isMoveConstructible() /*this(delete)*/ {
return std::is_move_constructible<Type>::value;
}
};
Berkus
никак не объясняет зачем тут this=delete
Konstantin
Constantine
никак не объясняет зачем тут this=delete
затем, что на самом деле следующая реализация семантически ошибочна:
struct HackedReflectionType: ReflectionType {
bool isMoveConstructible_;
virtual bool isMoveConstructible() {
return isMoveConstructible_;
}
};
Konstantin
Constantine
Konstantin
Constantine
Смотря на что
Можно вообще не писать никогда. Кажется, утверждалось, что const не учитывается компилятором, кроме как для проверки того, что кто-то не стреляет себе в ногу
Олександр
Всем привет, кто-нибудь сталкивался с раскраской отдельных элементов SVG-файла путём клика на области этих элементов? Типа, определять по координатам точки, какой это тэг файла. Если что, пишется это на виджетах Qt
Berkus
Олександр
хм, интересная идея, спасибо!
Constantine
Constantine
Крылатый
https://vittorioromeo.info/index/blog/zeroalloc_continuations_p1.html
Anatoly
@antoshkka а это валидное объявление другом
friend class ReflectionTypeImpl;
при условии, что ReflectionTypeImpl template?
Anatoly
вроде, должно быть
template<typename T>
friend class ReflectionTypeImpl;
Stanislav
@zamazan4ik а ты смотрю активно пишешьв пропозалах)
Stanislav
🙈 да за сегодня уже 3-4 письмо от тебя вижу
vladislav
самый активный участник чата за полгода
Stanislav
а я тупой :) хз че там писать
Stanislav
я вроде один раз написал, меня не поняли слегка я подзабил
Stanislav
да я читаю зато) там про extended классы было
Stanislav
как это, в шарпах есть такое
vladislav
а кто стандарт читал? Чтобы от корки до корки.
Крылатый
А кто не читал?
vladislav
vladislav
я не читал
Stanislav
дааа
Stanislav
во в шарпах так и называются C# extension methods
Stanislav
дак не ясно как ее готовить слегка
Stanislav
учитывая юниты трансляции всякие
Constantine
А что там технически такое расширение?
Stanislav
а если в .спп файле это делаешь? какие нахер модули?
Stanislav
удобна
Крылатый
Миксины шоле?
Constantine
ну это может быть реализовано одним костылем, правда, по-хорошему нужно иметь модуль, который их все знает
Stanislav
Stanislav
Constantine
короче вбрасываю идею
Constantine
C++ позволяют объявить шаблонный метод и не реализовать его
Constantine
реализация метода - запрос какой-то части класса по некоторому типу