Вопросы по теме 'static-assert'

Способы ASSERT выражений во время сборки в C
Я убираю некоторый старый код, который повсюду использует `` магические числа '' для установки аппаратных регистров, и я хотел бы использовать константы вместо этих чисел, чтобы сделать код более выразительным (на самом деле они будут сопоставляться с...
19467 просмотров
schedule 23.11.2023

Как сделать static_assert с макросами?
Я попытался использовать это предложение для статического утверждения, но я не получаю ошибки компиляции, если использую его в метод шаблона. Следующий пример: #include <iostream> #define STATIC_ASSERT(expr, msg) \ {...
7871 просмотров
schedule 17.11.2022

Что происходит, когда оператор [] терпит неудачу, и мне нужно подтверждение этого?
#include <iostream> int main() { int a[] = { 21, 213, 45 }; static_assert(a[22], "error for a\n"); return (0); } У меня есть таблица поиска в виде массива int , мне нужно проверить во время компиляции, может ли использование...
253 просмотров
schedule 21.03.2024

Могу ли я отключить статические утверждения?
У меня есть несколько довольно дорогостоящих вызовов static_assert , разбросанных по моему коду. Хотя они ценны, они часто излишни и значительно увеличивают время компиляции и использование памяти. Могу ли я отключить их?
1635 просмотров
schedule 28.09.2022

использование static_assert в классе - как?
Я пытаюсь упростить проверку во время компиляции, сохраняет ли значение преобразование одного значения в новый тип. В STL может быть что-то, что может сделать это для меня, но я этого не вижу, поэтому написал. Это работает, но я хотел преобразовать...
135 просмотров
schedule 30.09.2022

Идиоматический способ вызвать ошибку компилятора в ветке constexpr
Я оказался с этим типом кода, template<class T> void f(T const& t){ if constexpr(std::is_same<T, double>{}) call_a(t); // call_a only compiles for double else if constexpr(std::is_same<T, float >{}) call_b(t); //...
33 просмотров
schedule 03.12.2023

Я не знаю, почему этот код static_assert() не работает.
Это код: #pragma once #include <stdint.h> namespace Detours { static_assert(sizeof(uintptr_t) == sizeof(void *)); } Я получаю это сообщение об ошибке: Error (active) E2783 expected a comma (the one-argument version of...
1156 просмотров
schedule 25.01.2024