170 похожих чатов

Есть пример кода. По нему есть два вопроса: 1. Почему компилятор

ругается на метод foo? Ведь этот метод нигде не вызывается и, в моем понимании, компилятор не должен был пытаться его инстанцировать.

2. Возможен ли такой случай, что вычисление value будет отложено до инстанцирования foo?

16 ответов

17 просмотров

Компилятор ругается на отсутствие std::is_same_v, которого видимо не было на gcc 6.4, а не на foo

d7d1cd- Автор вопроса

После инстанцирования Type<char> std::enable_if_t<value> перестаёт быть dependent кодом, а потом и инстанцируется сразу. Воркэраунд: template <bool Value = value, typename = std::enable_if_t<Value>> void foo() { .. }

d7d1cd- Автор вопроса
Alexander Karaev
После инстанцирования Type<char> std::enable_if_t<...

А в этом примере почему работает? Ведь так же после инстанцирования value и, соответственно, Value, сразу известно... Аааа! До момента вызова foo компилятор не знает Value. Ведь это значение известно только в момент инстанцирования foo! Так?

d7d1cd- Автор вопроса

А что по поводу второго вопроса?

d7d1cd
А что по поводу второго вопроса?

Я его не понимаю. value будет вычислено сразу при инстанцировании класса, т.к. оно не dependent.

d7d1cd- Автор вопроса
Alexander Karaev
Я его не понимаю. value будет вычислено сразу при ...

А можно ли сделать так, что value будет вычислено не сразу?

А зачем вообще знать когда оно будет вычислено

d7d1cd
А можно ли сделать так, что value будет вычислено...

Зачем? В зависимости от цели можно придумать разные способы (более или менее удобные)

d7d1cd- Автор вопроса
Kelbon
А зачем вообще знать когда оно будет вычислено

Академический интерес. В боевом коде показанный пример работает, как будто value становится зависимым.

Alexander Karaev
После инстанцирования Type<char> std::enable_if_t<...

Ну и костыли не нужны с концептами, конечно

d7d1cd- Автор вопроса
Alexander Karaev
Зачем? В зависимости от цели можно придумать разны...

Ну, например, я хочу чтобы изначальный пример скомпилировался. То есть, чтобы value в Type стало зависимым.

d7d1cd- Автор вопроса
Kelbon
https://t.me/ProCxx/599967

Здесь value не становится зависимым. Зависимым становится Value.

d7d1cd
Здесь value не становится зависимым. Зависимым ст...

тот же самый приём можно применить где угодно

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Карта сайта