Получить ошибку при использовании значения contexPR в функции contexprC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Получить ошибку при использовании значения contexPR в функции contexpr

Сообщение Anonymous »

В функции get_stream_container_status, если использование переменной contexpr bool, компилятор дает ошибку в отношении «stream_container», не является постоянным выражением. Но вызовите функцию в кортеже и без переменной, она успешно компилируется. < /P>

get_stream_container_statustemplate
constexpr std::tuple get_stream_container_status(const Tuple& stream_container) {
constexpr bool is_contain_move_stream = contains_enum(stream_container, StreamType::kMoveStream);
constexpr bool is_contain_compute_stream = contains_enum(stream_container, StreamType::kComputeStream);

return std::make_tuple(
is_contain_move_stream,
is_contain_compute_stream
);
}
< /code>
Сообщение об ошибке: < /p>
: In instantiation of 'constexpr std::tuple get_stream_container_status(const Tuple&) [with Tuple = std::tuple]':
:38:63: required from here
:22:20: error: 'stream_container' is not a constant expression
22 | constexpr bool is_contain_move_stream = contains_enum(stream_container, StreamType::kMoveStream);
| ^~~~~~~~~~~~~~~~~~~~~~
:23:20: error: 'stream_container' is not a constant expression
23 | constexpr bool is_contain_compute_stream = contains_enum(stream_container, StreamType::kComputeStream);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Compiler returned: 1
< /code>

get_stream_container_statustemplate
constexpr std::tuple get_stream_container_status(const Tuple& stream_container) {
return std::make_tuple(
contains_enum(stream_container, StreamType::kMoveStream),
contains_enum(stream_container, StreamType::kComputeStream)
);
}
< /code>
тестовый код: < /p>
#include
#include
#include

enum class StreamType : uint8_t {
kDefaultStream, // Default stream, cntlass will choose the best stream type
kMoveStream, // move stream
kComputeStream, // compute stream
};

template
constexpr bool contains_enum(const Tuple& tuple, T value) {
if constexpr (Index < std::tuple_size_v) {
return std::get(tuple) == value || contains_enum(tuple, value);
} else {
return false;
}
}

template
constexpr std::tuple get_stream_container_status(const Tuple& stream_container) {
constexpr bool is_contain_move_stream = contains_enum(stream_container, StreamType::kMoveStream);
constexpr bool is_contain_compute_stream = contains_enum(stream_container, StreamType::kComputeStream);

return std::make_tuple(
is_contain_move_stream,
is_contain_compute_stream
);

// return std::make_tuple(
// contains_enum(stream_container, StreamType::kMoveStream),
// contains_enum(stream_container, StreamType::kComputeStream)
// );
}

int main() {
constexpr auto stream = std::make_tuple(StreamType::kDefaultStream, StreamType::kMoveStream, StreamType::kComputeStream);
constexpr auto result = get_stream_container_status(stream);
std::cout

Подробнее здесь: https://stackoverflow.com/questions/795 ... r-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получить ошибку при использовании значения contexPR в функции contexpr
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как примирить аргумент функции contexpr не Contexpr?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как примирить аргумент функции contexpr не Contexpr?
    Anonymous » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Как примирить аргумент функции contexpr не Contexpr?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Ошибка! Переменная contexpr должна быть инициализирована постоянным выражением contexpr
    Anonymous » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»