问题标签 [static-assert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2996 浏览

c++ - C ++ 11静态断言相等可比类型?

如何static_assert模板类型是 C++11 中的 EqualityComparable 概念?

0 投票
3 回答
301 浏览

c++ - 强制从一个类虚拟派生

我们的项目中有一个特殊的接口框架,部分要求是表示接口的类只能用作虚拟基类,不能用作非虚拟基类。有没有办法在代码中强制执行这一点?也就是说,如果类是从非虚拟派生的,则会产生编译错误。

我可以访问 VS 2010 实现的 C++11:这意味着static_assert,enable_if并且<type_traits>可用。

0 投票
1 回答
575 浏览

c++11 - InterlockedCompareExchange16 的 C++ 短枚举问题(使用 VS2012)

引用了这个问题:可以将枚举类转换为基础类型吗?.

在我的代码中,我有效地:

然后我写 atypedef和 a static_assert

最后我尝试设置状态InterlockedCompareExchange16

我从 VS2012 收到以下错误:

  1. 我的static_assert失败抱怨state_type与大小不一样short

  2. 抱怨它static_cast不能从volatile STATE *state_type *

请任何人都可以给我任何关于如何最好地修复我的代码的指示吗?

0 投票
1 回答
267 浏览

c++ - 确保谓词函数在 C++ 模板函数中有效

在编写一个接受谓词函数的函数时,例如下面的函数;如何确保谓词函数有效(即返回类型operator()有效)?

环顾 C++11 中的 type-traits 工具,我发现std::is_convertible<From,To>它看起来应该有所帮助,尽管我不确定如何使用它来检查是否存在从operator()to的合适的隐式转换bool。我能想到的唯一的事情是:

或者:

但这些对我来说似乎都不正确。

0 投票
2 回答
268 浏览

c++11 - constexpr 模板函数不会将成员数组大小视为 const 表达式

当 ArrayCount 是模板时,clang 和 gcc 都无法编译下面的代码。这似乎是错误的,特别是考虑到 sizeof ArrayCount 解决方案有效的事实。ArrayCount 的模板版本通常是一个更好的解决方案,但它在这里遇到了阻碍,并且 constexpr 似乎没有兑现其承诺的精神。

0 投票
4 回答
27629 浏览

c++ - 如何将模板类限制为某些内置类型?

这个问题已经讨论过几次,但我发现的所有解决方案要么不起作用,要么基于 boost 的静态断言。我的问题很简单。我有一堂课,我只想允许真正的类型(双精度和浮点数)。如果我尝试使用浮点或双精度以外的类型实例化类,我想要一个编译时错误。我正在使用 Visual C++ 11。这是我尝试过的:

有任何想法吗?提前致谢!

0 投票
2 回答
523 浏览

c++ - 为什么 std 类不在不可复制类型上使用 static_assert?

为什么 std 库不使用这些来代替?目前,如果对不可复制对象的复制构造函数进行调用,则错误消息可能有点“神秘”或让从未遇到过的人感到困惑。

第一次收到此错误消息时,我不知道问题出在哪里(我从没想过无法访问的 ctors 的想法),直到我查看课程并看到“不可复制”并最终理解。

将 copy-ctor 设为私有有什么好处?对于 ctor 重载,它在 VS intellisense 中仍然可见。

为什么他们不简单地选择:

如果有人尝试编译他们的代码,他们将看到此错误消息,其中更明确地说明了错误的原因。相比 (const someClass&) 是无法访问的。想象一下,当涉及大量使用模板时,理解这一点会有多困难?

那么,私有复制ctor 与 static_assert 有什么好处?

0 投票
1 回答
224 浏览

c++ - 在测试已声明但未定义的运算符是否存在时,static_assert 真的应该成功吗?

为什么static_assert下面会成功?我只是让<<操作员成为朋友,但我还没有在任何地方创建它。

0 投票
2 回答
459 浏览

c++ - 在静态断言中引用这个指针?

是否可以编写引用“this”指针的静态断言?我没有可用的 c++11,并且 BOOST_STATIC_ASSERT 不起作用。

产生:

在 MSVC 2008 中。

动机:

0 投票
1 回答
3934 浏览

unit-testing - 如何编写 static_assert 的可运行测试?

我正在为包含static_asserts 的源代码库编写单元测试套件。我想保证这些static_asserts 在设计方面不会比他们希望做的更多或更少。所以我希望能够测试它们。

我当然可以添加无法编译的接口单元测试,导致static asserts 被多种方式违反,并评论或#if 0全部删除,我个人向用户保证,如果其中任何一个未评论,那么他们将观察到该库无法编译。

但这将是相当荒谬的。相反,我想要一些设备,在单元测试套件的上下文中,将 a 替换static_assert为等效引发的运行时异常,测试框架可以捕获并有效报告:此代码将static_assert在真实的建造。

我是否忽略了一些明显的原因,为什么这将是一个愚蠢的想法?

如果没有,怎么可能做到?宏观仪器是一种显而易见的方法,我不排除它。但也许,最好是使用模板专业化或 SFINAE 方法?