Я понятия не имею, как компилятор решает, что может быть постоянным, а что не может. Понятно, что выражение, назначаемое для Bool, является ContexPR, потому что, похоже, у него нет проблем с возвращением IDX - 1, поэтому компилятор знает, что это постоянное выражение. Я не понимаю: < /p>
#include
#include
#include
#include
template
consteval auto index_of_type() -> uint64_t
{
uint64_t idx = 0;
// CANNOT BE CONSTEXPR EVEN THOUGH IT IS CONSTEXPR
// REMOVING constexpr MAKES IT COMPILE. AND THIS FUNCTION IS CONSTEVAL
constexpr bool bFound = ((++idx, std::is_same_v) || ...);
return idx - 1;
}
template
consteval auto index_of_tyoe_in_tuple(const std::tuple&) -> uint64_t
{
return index_of_type();
}
int main(int argc, char* argv[])
{
constexpr std::tuple my_tuple;
constexpr int idx = index_of_tyoe_in_tuple(my_tuple);
}
Ссылка Godbolt.
Я не могу сделать static_assert (bfound) Если я не сделаю bfound contexpr. Таким образом, в нем говорится, что IDX> 20 не является constexPR, и все же возврат IDX - 1 на самом деле постоянно. Странно.template
consteval auto index_of_type() -> uint64_t
{
uint64_t idx = 0;
static_assert(sizeof ... (among_Ts) > 1);
auto lambda = [=] () consteval mutable -> uint64_t
{
((++idx, std::is_same_v) || ...);
return idx;
};
// STILL CAN'T BE CONSTEXPR WHY?????
constexpr uint64_t idx_of_type = lambda.template operator() < type, among_Ts... > ();
return idx_of_type - 1;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -compile-t
Почему я не могу объявить этот Bool ContexPR, хотя он четко оценивается во время компиляции? ⇐ C++
Программы на C++. Форум разработчиков
1749388732
Anonymous
Я понятия не имею, как компилятор решает, что может быть постоянным, а что не может. Понятно, что выражение, назначаемое для Bool, является ContexPR, потому что, похоже, у него нет проблем с возвращением IDX - 1, поэтому компилятор знает, что это постоянное выражение. Я не понимаю: < /p>
#include
#include
#include
#include
template
consteval auto index_of_type() -> uint64_t
{
uint64_t idx = 0;
// CANNOT BE CONSTEXPR EVEN THOUGH IT IS CONSTEXPR
// REMOVING constexpr MAKES IT COMPILE. AND THIS FUNCTION IS CONSTEVAL
constexpr bool bFound = ((++idx, std::is_same_v) || ...);
return idx - 1;
}
template
consteval auto index_of_tyoe_in_tuple(const std::tuple&) -> uint64_t
{
return index_of_type();
}
int main(int argc, char* argv[])
{
constexpr std::tuple my_tuple;
constexpr int idx = index_of_tyoe_in_tuple(my_tuple);
}
Ссылка Godbolt.
Я не могу сделать static_assert (bfound) Если я не сделаю bfound contexpr. Таким образом, в нем говорится, что IDX> 20 не является constexPR, и все же возврат IDX - 1 на самом деле постоянно. Странно.template
consteval auto index_of_type() -> uint64_t
{
uint64_t idx = 0;
static_assert(sizeof ... (among_Ts) > 1);
auto lambda = [=] () consteval mutable -> uint64_t
{
((++idx, std::is_same_v) || ...);
return idx;
};
// STILL CAN'T BE CONSTEXPR WHY?????
constexpr uint64_t idx_of_type = lambda.template operator() < type, among_Ts... > ();
return idx_of_type - 1;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79657686/why-cant-i-declare-this-bool-constexpr-even-though-it-is-evaluated-at-compile-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия