static-assert 相关问题

在编译时验证的断言语句。 C ++ 11 / C ++ 14的一个特性,自4.3以来由gcc支持

我如何静态地断言static_cast是noexcept?

我有一个漏斗,用来执行从任何类型到特定类型的静态转码,定义如下:模板 struct cast_to {模板 T_Out operator()...

回答 1 投票 3

在C++中静态区分一个枚举类和一个枚举类?

我有一个事件处理类,它使用模板参数来设置事件类型。我想让这些事件类型成为一个字节大小的枚举类。针对大小的静态断言不是一个 ...

回答 1 投票 0

如何静态地断言是否定义了枚举常量?

我有这段C++14的代码。#include 结构f1 { enum结构e { a }; }; 结构f2 { enum结构e {}; }; 模板。 struct my_struct { using e = ...

回答 1 投票 2

是否有可能在GCC / GNU C中编写_Static_assert来在编译时验证内存中位字段的布局?

假设我具有以下定义:#include #include #define ASSERT(cond)_Static_assert(cond,#cond)typedef union {struct {bool bit0:1; ... ] >>

回答 1 投票 2

如何在(* this)上检查std :: is_base_of <>

对于某些任务,我没有没有宏就无法摆脱。现在,我想至少添加一些防止滥用的保护措施。我想static_assert MYMACRO()用于基类的子类中,...

回答 2 投票 0

为什么static_assert错误:即使我确实传递常量,“表达式也必须具有常量值?

这段代码编译没有问题:const int tmp1 = 1,tmp2 = 1; const bool cmp =(tmp1 == tmp2); static_assert(cmp,“ OK”);这个也很好:const bool cmp =(HUGE_VALF == ...

回答 1 投票 0

Trivial C ++代码在一个测试项目中通过,但在主要项目中失败

这两个简单的代码行:const bool equal =(HUGE_VALF == HUGE_VALF); static_assert(等于== true,“致命错误”);在测试程序中完美运行(没有警告,没有错误)。当我复制...

回答 1 投票 1

如何在assert()和static_assert()之间分配,如果在constexpr上下文中依赖,则依赖?

在C ++ 11 constexpr函数中,不可能使用第二条语句,例如assert()。 static_assert()很好,但是如果该函数被称为“普通”函数,则将无法正常工作。逗号运算符...

回答 2 投票 2

如何将static_assert与sizeof和stringify结合?

内存使用率在我的应用程序中非常关键。因此,我有一个明确的断言,即在编译时检查内存大小,如果内存大小与我们的内存大小不同,则给出static_assert ...

回答 4 投票 17

如何使`static_assert`打印失败时得到的值?

正在运行:#define STATIC_ASSERT(...)static_assert(__ VA_ARGS__,#__VA_ARGS__)模板 constexpr const int startfindlastslash(const char(&path)[PathLength]){...

回答 2 投票 2

如何确保位字段的成员位于基础类型的相同位置或确保位字段的成员位于精确位置

我想知道是否有可能进行编译时检查来验证两个不同位域中的成员是否处于同一位置。确切位置无关紧要。结构A {uint8_t x:1; ...

回答 1 投票 1

为什么在类型转换的nullptr上不进行隐式转换

[我试图找到一种方法来静态断言,当我遇到意外情况时,派生类的指针可以安全地重新解释为指向基类的指针:我本来希望...

回答 2 投票 1

为什么C11全局和局部静态断言的行为不同?

请考虑以下代码:const int g_foo = 1; //(1):_Static_assert(g_foo> 0,“ g_foo> 0”); //错误:静态断言中的表达式不是常量。 _Static_assert(g_foo> 2,“ g_foo ...

回答 2 投票 0

[在类中使用static_assert-如何?

我试图简化在编译时检查将一个值转换为新类型是否保留该值的过程。 STL中可能有某些功能可以为我完成此操作,但是我看不到...

回答 1 投票 1

Visual C:模板类中的自定义错误消息

以下代码失败(如预期)。令我困扰的是错误消息。它没有明确说明问题所在。我本来希望“无法从const char *转换为int”之类的东西。 ...

回答 1 投票 0

Staticly断言该枚举一定基本类型

MISRA 10.1者禁用的枚举类型的对象上执行算术。基本枚举类型的操作数不应在算术运算中使用,因为一个枚举对象使用一个...

回答 1 投票 2

C ++:在编译时确保函数只调用指定的线程

我有一个复杂的结构,这不是线程安全修补匠的方法。通常情况下,这是没有问题的,本质上是这种方法的所有调用应该从初始化阶段进行,其中...

回答 2 投票 0

如果constexpr编译时崩溃错误的分支

我有一个序列化函数,类似于:class Serializer {template T read(const std :: string&source){if constexpr(std :: is_same

回答 2 投票 2

未定义的行为是否会影响static_assert?

请考虑以下代码:SomeType x = getX(); for(auto mask = 1u <= sizeof x,“数字参数类型太长”......

回答 2 投票 10

静态在实例化时断言模板类型的大小

我想在实例化时使用static_assert检查以下结构的大小,以约束未命名的struct紧密打包,因此A的大小相当于sizeof(T)* 3. ...

回答 2 投票 7

© www.soinside.com 2019 - 2024. All rights reserved.