Вопросы по теме 'static-assert'
Что делает static_assert и для чего бы вы его использовали?
Не могли бы вы привести пример, где static_assert(...) ('C++11') элегантно решил бы проблему?
Я знаком со средой выполнения assert(...) . Когда мне следует предпочесть static_assert(...) обычному assert(...) ?
Кроме того, в boost есть...
68919 просмотров
schedule
16.05.2023
static_assert не распознает параметр шаблона const char * как constexpr: ошибка g ++?
Рассмотрим определения ниже.
char right_string[]="::right_one.";
char wrong_string[]="::wrong_one.";
template<const char* str>
void f(){
static_assert(str==::right_string, "Pass me ::right_string!");
}...
1097 просмотров
schedule
26.04.2022
Статическое утверждение С++ 11 для сопоставимого типа равенства?
Как static_assert тип шаблона является концепцией EqualityComparable в С++ 11?
2817 просмотров
schedule
24.07.2022
Макрос assert, который расширяется до static_assert, когда это возможно?
У меня есть общий код, который должен запускать утверждение над результатом функции-члена. Эта функция-член может быть constexpr , а может и не быть.
template<typename T>
void foo(T t) {
assert(t.member_function() == 10);
}...
342 просмотров
schedule
13.03.2024
Лучшее сообщение для `static_assert` о размере объекта
Я довольно часто использовал static_assert (и варианты до стандартизации). Одно из применений, которое, я уверен, многие из нас используют, - это обеспечение того, чтобы размер структур конфиденциальных данных оставался таким, как предполагается...
1201 просмотров
schedule
12.12.2023
static_assert работает неправильно
у меня есть перегруженный operator& для моего класса, где я делаю статическое утверждение, если параметр является указателем.
class test {
public:
template<typename T>
friend inline test& operator&(test& so, T...
932 просмотров
schedule
25.05.2023
Получение std::complex‹double› для прохождения теста std::is_floating_point
Я хочу, чтобы типы double , float , complex<double> и complex<float> передавали условие static_assert . Я полагал, что static_assert(std::is_floating<T>::value, "some message") поможет, но сложные типы не проходят этот тест...
696 просмотров
schedule
24.07.2022
Подтвердите целостность аргумента макроса
Я пытаюсь создать макрос, который статически утверждает, что его аргумент является строго положительным целым числом. Это для использования во многих других моих старых макросах, которые до сих пор просто предполагали без какой-либо проверки...
136 просмотров
schedule
20.05.2023
Почему реализация пользовательского статического утверждения не сразу статично утверждает истину?
Существуют различные способы реализации статического утверждения для случаев, когда компилятор C++ не имеет встроенного static_assert . Это один пример из Windows SDK (другой известный — из Boost):
#define C_ASSERT(e) typedef char...
171 просмотров
schedule
06.02.2023
static_assert с частичной специализацией шаблона
template<typename T, typename U = void>
struct S { /* static_assert(0, "type unsupported"); */ };
template<typename T>
struct S<T, typename std::enable_if<std::is_integral<T>::value, void>::type> {
void foo() {}
};...
932 просмотров
schedule
31.12.2022
Boost Fusion: проверка адаптированного порядка членов структуры во время компиляции
Я использую BOOST_FUSION_ADAPT_STRUCT() , и мне нужно проверить, что все элементы объявлены и расположены в правильном порядке. Итак, сначала я сделал это:
template <typename Sequence>
struct checker
{
static void check()
{...
467 просмотров
schedule
08.10.2023
Генерировать ошибку времени компиляции, если параметр константы времени компиляции неверен
Я пытаюсь написать функцию, которая при вызове с аргументами, постоянными во время компиляции, вызовет ошибку времени компиляции, если значение аргумента не соответствует static_assert , но все же может быть вызвана во время выполнения с вычисленным...
683 просмотров
schedule
13.03.2023
Как я могу вызвать ошибку компиляции в функции constexpr вместо того, чтобы позволить ей распасться в контексте, отличном от constexpr?
Вот код, который я хотел бы написать:
int id1 = not_const_expr_1();
int id10 = not_const_expr_10();
constexpr Device& cD1 = get_device(1); // 1. ok
constexpr Device& cD10 = get_device(10); // 2. compile error
Device& cD1 =...
542 просмотров
schedule
19.07.2022
Разрешено ли компиляторам оценивать тавтологии в статическом утверждении
Часто полезно указывать static_assert в шаблонах. В случае, когда шаблон вообще не должен создаваться определенным образом, я часто делаю это
template<typename T, typename = void>
struct S
{
static_assert(false, "Unconditional...
216 просмотров
schedule
29.07.2023
если constexpr со static_assert в лямбде, какой компилятор правильный?
Когда мы хотим использовать static_assert в if constexpr , мы должны сделать условие зависимым от некоторого параметра шаблона. Интересно, что gcc и clang расходятся во мнениях, когда код заключен в лямбду.
Следующий код компилируется с помощью...
428 просмотров
schedule
24.06.2022
Как мне статически утверждать, что static_cast не является исключением?
У меня есть функтор для выполнения статических приведений любого типа к определенному типу, определенному таким образом:
template <typename T_Out>
struct cast_to {
template <typename T_In>
T_Out operator()(T_In&& value)...
110 просмотров
schedule
09.04.2023
Могу ли я статически утверждать, что сущность является экземпляром класса шаблона, не применяя какие-либо / все аргументы шаблона?
Может быть, вопрос в названии слишком общий, и он общий, потому что мне любопытно
Но этот общий вопрос возник из конкретного, менее общего варианта использования.
Изначально я написал функцию, работающую с массивом из двух элементов класса A :...
30 просмотров
schedule
09.01.2023