- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
SFINAE — это просто
template<typename T> struct has_foo{
private: // Спрячем от пользователя детали реализации.
static int detect(...); // Статическую функцию и вызывать проще.
template<typename U> static decltype(std::declval<U>().foo(42)) detect(const U&);
public:
static constexpr bool value = std::is_same<void, decltype(detect(std::declval<T>()))>::value; // Вот видите, готово.
};
Программирование на "Modern C++" всё больше и больше становится похожим на отчаянную попытку выебать козла плазменным телевизором.
via h/205772
inho 30.09.2017 23:42 # 0
Ёбаная крестушня
FrauSchweinhund 30.09.2017 23:57 # +5
https://ideone.com/nggFFg
gost 01.10.2017 09:02 # +1
1024-- 01.10.2017 10:28 # 0
subaru 01.10.2017 11:43 # +1
FrauSchweinhund 01.10.2017 12:27 # +1
Но у меня вот даже захачить получилось https://ideone.com/UH8XjX - правда это уже говно какое-то.
gost 01.10.2017 13:23 # +2
PS,
Antervis 01.10.2017 16:06 # 0
subaru 01.10.2017 17:55 # +1
Antervis 01.10.2017 18:46 # 0
по-твоему "нормальные программисты" просто пишут бойлерплейт или тьму макросов?
> Хотя тогда лучше возвращаемый тип проверять через is_convertible
в концептах как раз проверка не на конкретный тип, а на is contextually convertible.
subaru 01.10.2017 18:49 # +3
Antervis 01.10.2017 19:56 # 0
И вот им нужна проверка на наличие метода
FrauSchweinhund 01.10.2017 21:08 # +2
Что-то я сомневаюсь, что в спаннере или фотошопе есть хоть одна проверка на наличие метода на этапе конпеляции хоть в одной из зависимостей. Как же бедняши написали sqlite на своей сишке, если в ней нельзя метод на этапе конпеляции проверить и вообще методов нет? Как же реализовать интрузивный список или дерево без проверок методов на этапе конпеляции? Как же мы жили, пока деклтайп не завезли, страшно подумать.
Dummy00001 01.10.2017 21:39 # +1
subaru 01.10.2017 22:09 # +3
Что касается проверки метода на этапе конпеляции, то это почти наверняка в любой ситуации неуместное говно - я бы очень не хотел, чтобы мой метод просто молча не вызывался из-за опечатки в названии или сигнатуре.
Если еще не очевидно, я пишу с субару и фраушвайнхунд.
Dummy00001 01.10.2017 22:31 # +1
1) метушня это просто текущая мода.
2) это старая(*) неизлечимая болезнь, от которой разработка никогда никуда не денется.
(*) вспомни когда было сказано "premature optimization is root of all evil".
с другой стороны, оверинженеринг с опытом проходит. запомни: программа есть отражение того что происходит в голове разраба. (плюс вершн контрол: "и как происходит".) оверинженеринг это просто отражение недопонимания выполняемой задачи. (с другой стороны, иногда нихера не известно в начале проекта, и приходится оверинженерить что бы на дедлайне не парится.)
Antervis 02.10.2017 04:55 # 0
писали больше кода. Я ж не говорю, что нельзя.
> Как же реализовать интрузивный список или дерево без проверок методов на этапе конпеляции?
в stl контейнерах есть проверки на is_noexcept_movable - проверки на наличие метода, по факту.
> Как же мы жили, пока деклтайп не завезли, страшно подумать.
в си же зачем-то завезли typeof. Видимо, без него сложно было
j123123 02.10.2017 08:27 # +3
Это не в Си завезли, а сделали нестандартное расширение, которое поддерживает GCC, Clang и ICC под линупсами (емнип, ICC в линупсах мимикрирует под GCC, а в виндовсах под MSVC)
И применяется сия хуита в основном во всяких говномакросах, типа
Кстати обратите внимание, в этом говномакросе используется аж целых два нестандартных расширения:
https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
https://gcc.gnu.org/onlinedocs/gcc/Typeof.html
gost 02.10.2017 11:25 # +3
Да это же замыкания!
govnokod3r 01.10.2017 12:23 # 0
\0
Antervis 01.10.2017 16:25 # 0
https://wandbox.org/permlink/xN8VPaYXXhsf2emD
j123123 02.10.2017 08:32 # +1
Antervis 02.10.2017 08:39 # 0
bormand 02.10.2017 08:42 # +6
dxd 02.10.2017 12:44 # +4
vistefan 04.10.2017 10:49 # +4
SemaReal 04.10.2017 11:44 # +7
vistefan 04.10.2017 11:59 # +8
dxd 06.10.2017 19:35 # 0
CHayT 06.10.2017 19:43 # 0
FrauSchweinhund 04.10.2017 12:37 # 0
bormand 05.10.2017 21:01 # +1
inho 05.10.2017 21:14 # +5
d_fomenok 06.10.2017 14:08 # 0
j123123 01.01.2018 12:25 # +2
j123123 01.01.2018 12:27 # +3
Зато потребление достигло невиданных высот, держать в доме телевизор старше одного месяца считалось неприличным, новые модели активно привозились, а старые сдавались в утиль. Искусственный интеллект так и не осилил транспортных средств – то самолёт вмажется в небоскрёб, то автобус въедет в остановку, так что многие программисты переквалифицировались в шофёров. Именно в этой сфере деятельности и подвизался СТРАУСТРУП в последние несколько лет.
Бизнес-центр ничем не отличался от своих собратьев: после стандартных антитеррористических процедур, включавших себя рентген, флюорографию, томографию, спектрографию и прочие «графии», так знакомые любому жителю этой поры, СТРАУСТРУП с трудом отбился от вагиноскопии и попал в комнату №101, ибо рисунок его радужной оболочки по ошибке совпал с данными одного известного биткойнодилера. К счастью, у СТРАУСТРУПА был с собой пистолет, голографическое фото на котором послужило надёжным удостоверением личности в просвещённый электронный век.
j123123 01.01.2018 12:27 # +3
– Итак, нам требуется драйвер. Нужно развозить новые модели бытовой техники и забирать старую. Владеете ли вы автоматической гирей? – так на модном полуанглийском именовалась коробка передач.
– Есть небольшой опыт, – отвечал СТРАУСТРУП. – Я всю жизнь имел дело с ручной, так что проблем не будет.
– Сомневаюсь. Я пробовал стик после автомата, и у меня... В самом деле, без высокоуровневых фреймворков сейчас никуда, с ними быстрее и удобнее Ладно, вот вам тестовое задание: развернуть строку… ой, я сам из бывших… нужно подъехать к дому и развернуть автомобиль так, чтобы он был припаркован задом наперёд.
– А зачем это?
– Проверить ваши навыки вождения. Сначала расскажите, какой подход примените.
– Ну, объеду квартал…
– Зачем это, достаточно же просто развернуться.
– Видите ли, я в последние годы был связан с высоконагруженностью – водил грузовик с прицепом…
– Считайте, что ширина дороги достаточная. Считайте, что у вас легковой автомобиль. Кстати, вы водили их последние версии?
– Нет, но…
– Сомневаюсь, что вы справитесь с замыканиями.
– Какими ещё замыканиями?
– Гудки режут слух, так что в современных моделях звуковой сигнал мычит. Так как же вы развернётесь?
– Ну, я подъеду, включу Reverse…
– Библиотечные функции использовать нельзя!
– А как же многопоточность? Водители из других полос вряд ли будут рады простаивать, пока я описываю большой круг.
– Это не главное. Нам важно, чтобы быстро. К сожалению, мы не можем вам предложить работу. Наши специалисты разворачиваются за пару секунд.
– Да не может быть!
– Смотрите, – и экзаменатор подошёл к симулятору. Разгон, удар по тормозам, управляемый занос, машина встаёт в обратном направлении…
j123123 01.01.2018 12:27 # +3
– Братишка, я тебе покушать принёс! Посмотри, чтобы я задом ни в кого не въехал.
После серии тырканий туда-сюда, грузовику удалось-таки припарковаться. СТРАУСТРУП не удержался и задал вопрос водителю по поводу разворота путём управляемого заноса.
– Ты что, только что от нашего клоуна? – сообразил шофёр. – Это он так нашу кадровичку до метро подвозит, ей-то ничего не будет, она всё равно деревянная, а у меня в кузове 20 шестиметровых рулонов сданных телевизоров – побьются.
– Так ведь их же всё равно в утиль.
– Дурак что ли?
– А куда, в Африку?
– Ты ведь работу ищешь? Так? Ну пойдём, попробую поговорить, может, тебя возьмут…
Склад оказался огромным ангаром, забитым под завязку бытовой техникой.
– Вот смотри, – объяснял СТРАУСТРУПУ уже знакомый нам шофёр. – Клиенты один чёрт не помнят, что было год назад. Поэтому мы свозим их барахло сюда, выдерживаем 12 месяцев, потом приделываем шильдик новой модели и в путь!
– То есть как это?
– Ты что, еду сам не покупаешь? Когда у твоих любимых сосисок истекает срок годности, специальная тётка клеит свежую этикетку. Так и у нас… Постой здесь, я перетру с мастером…
СТРАУСТРУП был счастлив – его взяли на работу! Мастер тоже был из… бывших, долго гонял по способам сортировки просроченной продукции, предложил разработать алгоритм обхода склада, спрашивал, почему у них не стек, а очередь. В конце беседы похлопал по плечу:
– В нашем деле прежде всего нужно знать, чем равенство объектов отличается от equals. Клиенты в этом ни бум-бум, а мы этим пользуемся. Выходи после Нового года, будешь менять указатели, тьфу ты, шильдики. Хочешь смузи? Не боИсь, не просроченное… Десятилетней выдержки!..
Так счастливо закончилась эта удивительная история трудоустройства программиста.
syoma 01.01.2018 13:00 # +1
j123123 02.10.2017 09:30 # +4
d_fomenok 06.10.2017 15:40 # 0
А вдруг говностандартизаторы тоже хейтеры?
gost 06.10.2017 17:06 # +8
j123123 16.03.2019 12:14 # 0
gost 02.10.2017 11:39 # +7
После чего наступит коммунизм всеобщее благоденствие, и крестопрогеры смогут смотреть на других прогеров как на говно, потому что больше крестокода писать им будет не нужно.
P. S. Правда, к тому времени все программы на всех других языках давно будут писаться нейросетями и искуственными интеллектами, и программисты будут нинужны. Но это уже совсем другая история...
gost 02.10.2017 06:21 # +4
Метушня — с украинского «суета, суетня; хлопоты, хлопотня; суматоха, сумятица; сутолока».
Спонсор этой минутки интересных фактов — проект Wiktionary: https://ru.wiktionary.org/wiki/метушня.
inho 02.10.2017 09:39 # +3
inkanus-gray 02.10.2017 14:34 # +4
Но подраться не решились.
Если сильно метушиться,
Можно метушни лишиться.
Если метушни лишиться,
Нечем будет метушиться.
Stallman 02.10.2017 15:07 # +5
UB может приключиться ...
bormand 02.10.2017 15:30 # +1
Если UB вдруг приключится,
Нечем будет метушиться.
3.14159265 02.01.2018 16:21 # 0
неактуальная_шутка_про_breaking_bad.тхт