FailsBot
USAGE: /help - prints this message; /vzhuh [message] - do vzhuh; /start - info about bot.
Б.
Оу
Evgenii
/vzhuh@FailsBot
FailsBot
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆
Unhappy
ООП — фигня, а не конвенция ) Это всё легко можно использовать через жопу. А паттерны — это уже не на уровне языка.
Constantine
С чего так? :)
Потому что оно использует... кажется, это называется номинативная стратегия. Когда молоток бьет по гвоздю, ООП нам говорит "молоток. ударь(гвоздю, сильно)" и потом унаследованная реализация молотка скроет форму ручки. Потенциально можно писать пассивно "гвоздь.удариться(молотоком, сильно)", но всегда ООП сосредоточено на одном основном объекте, хотя действие весьма равноправно
Constantine
Никак
Constantine
Ты не можешь использовать имя перегруженной функции, не указав сразу тип вызываемой версии
Constantine
Вроде универсальный инвокер по имени получить не можешь никак
Constantine
Не универсально - я туплю, поздно, но должно быть можно для конкретной функции через промежуточный явный тип инвокера
Constantine
Т.е. параметры надо распаковывать в шаблонные параметры класса
Constantine
Типа f_invoker<параметры>(tuple)
Constantine
Короче тебе нужен промежуток, который задедуктит типы из тупла для вызываемой функции
Constantine
Чтобы потом явно указать шаблонные параметры вызываемой функции
Constantine
Ну то есть template<typename... Args> f_invoke(tuple<Args...>)
Constantine
И в нем уже apply на f<Args...>
Constantine
Универсальный инвокер возможен для еласса с шаблонными параметрами, потому что такой класс можно передать как параметр шаблона
Constantine
Хм... я ошибаюсь. Универсальный инвокер возможен для шаблонной функции такого вида, но её специализация в этом случае будет приводить к ужасу и нужно знать возвращаемое значение. Для этого нужно сделать указатель на функцию с правильной сигнатурой undeductable параметром danger_apply_by_name()
Constantine
Прикол в том что приведение overloaded function к указателю на функцию инстанцирует шаблон, но при этом все параметры в указателе на функцию должны быть в точности такими, какие они в функции.
Constantine
Ну да, с точностью до конвенции обзывания. apply_foo, наверное
Constantine
Я обычно на unique_ptr проверяю что все как надо переместил
Constantine
Я бы скорее на макросах DECLARE_APPLY написал
Ioann_
Так а что не так, если все работает ?
Constantine
Ну строго говоря apply_foo надо писать для каждой foo, а такие вещи обычно шляются ящиками
Ioann_
Аа... проглядел... а ведь можно было в идеале написать foo<int, int>, make....
Ioann_
А если децлтайп заюзать ?
Constantine
Пойду дальше думать, как обходить нарушение ODR из-за неполных типов в is_detected
Ioann_
А децлтайп не выводит разве типы K переменных ?
Ioann_
Ну я так понимаю речь о схх17, коли тут аплай
Constantine
А если децлтайп заюзать ?
Я просто скажу, что в С++ по моим сведениям нет типа "шаблонная функция"
Constantine
Т.е. само по себе foo не имеет типа
Ioann_
А через лямбду ?
Constantine
А через лямбду ?
Ты не можешь передать foo как параметр шаблона или функции, тебя не спасет ничего
Ioann_
Нет саму фу
Ioann_
Как лямбду сделать
Ioann_
А писать что то вроде auto&&...args
Ioann_
Ну я тут не особо силен, так как до 17 еще не дорос
Ioann_
Так что если путаю чего - изменяйте
Constantine
Фишка в том, что foo без указанных шаблонных параметров это overloaded function. Вот шаблонный класс это возможный параметр шаблона, а overloaded function это сущность "несколько функций с одним именем"
Ioann_
Ну это я знаю
Ioann_
А вот на so
Ioann_
https://stackoverflow.com/questions/40523334/applying-a-variadic-function-with-stdapply
Ioann_
Не то ли самое что нужно ?
Ioann_
Я вообще не понимать зачем лезть в такие дебри, но кто знает - может это вправду полезно. Правда, повторюсь если косячу - извиняйте, я с телефона по большей части сижу. Тут даже godbolt не грузит.
Constantine
Это уже написали через промежуточный invoke
Ioann_
Ну тогда действительно никак.
Ioann_
Ну это вообще, видимо да - тоже что и ты скидывал.
Ioann_
Хороший совет программистам на заметку - ложиться в 4 утра, значит протупить весь следующий день
Constantine
Угу, с лишней лямбдой, которая будет в ашнике и с точки зрения вижака 2014 нарушает ODR
Constantine
Угу, с лишней лямбдой, которая будет в ашнике и с точки зрения вижака 2014 нарушает ODR
Хех, я так это и не проверил на 2017. Видимо, они слишком буквально понимают что лямбда это уникальный тип
Constantine
Пытаешься нестатическую функцию без объекта вызвать?
Constantine
Да не за что :)
Ioann_
Везет, кому то в 12 встать можно. Я уж сколько пытаюсь уснуть, не выходит нифига. Я уже и бил себя и кровать ... не помогает...
Constantine
Допускают что? Я бы хотел посмотреть на самый популярный объектный язык программирования, который основан на глагольных кодированиях действий или в котором выполняется implicit cast по фасадам
Processor
да какая разница, я сравнивал написание программ с объектами и на Си, на чистом Си получается, что для определенного спектра программ приходится писать одну структуру и сотню методов вокруг нее
Processor
это тоже выглядит не круто
Processor
проще написать 1-2 объекта
Constantine
Я приведу простой пример, не хочется удаляться в холивары
Constantine
Вы когда-нибудь задумывались, почему считаете, что будущее впереди?
Processor
потому что время идет вперед, если ты изменишь понятие назад на вперед, от этого не изменится течение времени
Constantine
Вот вы считаете, что время идет вперед
Constantine
А теперь представьте себя на оси времени
Constantine
Что логичнее считать - что вы идете по оси времени вперед или назад?
Processor
да все просто, кто-то пишет более быстрые проекты на более сложном, кто-то пишет более медленные проекты быстро, на более простом
Processor
осталось выбрать платформу
Processor
а кто-то делает ход конем и пишет свой язык на С
Constantine
Так почему вы считаете, что время идет вперед?
Processor
или трансляторы на Haxe, как пример
Processor
потому что каждый день у меня пропадает 40 миллионов клеток, превращаясь в пыль и я не могу вернуть их из прошлого
Constantine
Поймит епример внимательно
Constantine
Время идет, вы идете по дороге
Constantine
Вы видите то, что впереди
Processor
я не сказал, что я считаю, но если ты изменишь слово вперед на назад, от этого не изменится концепция жизни, эволюции и смерти
Constantine
Каждую секунду вы видите на одну секунду больше
Constantine
Намного лучше подходит, что вы идете спиной
Constantine
И будущее у вас за спиной, а прошлое перед вами
Processor
я предпочитаю обходить подобные вопросы и юзать чисто прагматичный подход