问题标签 [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.
c++ - C ++ 11静态断言相等可比类型?
如何static_assert
模板类型是 C++11 中的 EqualityComparable 概念?
c++ - 强制从一个类虚拟派生
我们的项目中有一个特殊的接口框架,部分要求是表示接口的类只能用作虚拟基类,不能用作非虚拟基类。有没有办法在代码中强制执行这一点?也就是说,如果类是从非虚拟派生的,则会产生编译错误。
我可以访问 VS 2010 实现的 C++11:这意味着static_assert
,enable_if
并且<type_traits>
可用。
c++11 - InterlockedCompareExchange16 的 C++ 短枚举问题(使用 VS2012)
引用了这个问题:可以将枚举类转换为基础类型吗?.
在我的代码中,我有效地:
然后我写 atypedef
和 a static_assert
:
最后我尝试设置状态InterlockedCompareExchange16
:
我从 VS2012 收到以下错误:
我的
static_assert
失败抱怨state_type
与大小不一样short
抱怨它
static_cast
不能从volatile STATE *
到state_type *
请任何人都可以给我任何关于如何最好地修复我的代码的指示吗?
c++ - 确保谓词函数在 C++ 模板函数中有效
在编写一个接受谓词函数的函数时,例如下面的函数;如何确保谓词函数有效(即返回类型operator()
有效)?
环顾 C++11 中的 type-traits 工具,我发现std::is_convertible<From,To>
它看起来应该有所帮助,尽管我不确定如何使用它来检查是否存在从operator()
to的合适的隐式转换bool
。我能想到的唯一的事情是:
或者:
但这些对我来说似乎都不正确。
c++11 - constexpr 模板函数不会将成员数组大小视为 const 表达式
当 ArrayCount 是模板时,clang 和 gcc 都无法编译下面的代码。这似乎是错误的,特别是考虑到 sizeof ArrayCount 解决方案有效的事实。ArrayCount 的模板版本通常是一个更好的解决方案,但它在这里遇到了阻碍,并且 constexpr 似乎没有兑现其承诺的精神。
c++ - 如何将模板类限制为某些内置类型?
这个问题已经讨论过几次,但我发现的所有解决方案要么不起作用,要么基于 boost 的静态断言。我的问题很简单。我有一堂课,我只想允许真正的类型(双精度和浮点数)。如果我尝试使用浮点或双精度以外的类型实例化类,我想要一个编译时错误。我正在使用 Visual C++ 11。这是我尝试过的:
有任何想法吗?提前致谢!
c++ - 为什么 std 类不在不可复制类型上使用 static_assert?
为什么 std 库不使用这些来代替?目前,如果对不可复制对象的复制构造函数进行调用,则错误消息可能有点“神秘”或让从未遇到过的人感到困惑。
第一次收到此错误消息时,我不知道问题出在哪里(我从没想过无法访问的 ctors 的想法),直到我查看课程并看到“不可复制”并最终理解。
将 copy-ctor 设为私有有什么好处?对于 ctor 重载,它在 VS intellisense 中仍然可见。
为什么他们不简单地选择:
如果有人尝试编译他们的代码,他们将看到此错误消息,其中更明确地说明了错误的原因。相比 (const someClass&) 是无法访问的。想象一下,当涉及大量使用模板时,理解这一点会有多困难?
那么,私有复制ctor 与 static_assert 有什么好处?
c++ - 在测试已声明但未定义的运算符是否存在时,static_assert 真的应该成功吗?
为什么static_assert
下面会成功?我只是让<<
操作员成为朋友,但我还没有在任何地方创建它。
c++ - 在静态断言中引用这个指针?
是否可以编写引用“this”指针的静态断言?我没有可用的 c++11,并且 BOOST_STATIC_ASSERT 不起作用。
产生:
在 MSVC 2008 中。
动机:
unit-testing - 如何编写 static_assert 的可运行测试?
我正在为包含static_assert
s 的源代码库编写单元测试套件。我想保证这些static_assert
s 在设计方面不会比他们希望做的更多或更少。所以我希望能够测试它们。
我当然可以添加无法编译的接口单元测试,导致static assert
s 被多种方式违反,并评论或#if 0
全部删除,我个人向用户保证,如果其中任何一个未评论,那么他们将观察到该库无法编译。
但这将是相当荒谬的。相反,我想要一些设备,在单元测试套件的上下文中,将 a 替换static_assert
为等效引发的运行时异常,测试框架可以捕获并有效报告:此代码将static_assert
在真实的建造。
我是否忽略了一些明显的原因,为什么这将是一个愚蠢的想法?
如果没有,怎么可能做到?宏观仪器是一种显而易见的方法,我不排除它。但也许,最好是使用模板专业化或 SFINAE 方法?