20得票5回答
“未定义行为”是否也适用于编译时期?

我们都听过这样的警告:如果在C或C ++中使用未定义的行为,则可能发生任何事情。 这是否仅限于运行时行为,还是也包括任何编译时行为?特别地,当编译器遇到调用未定义行为的结构时,是否允许拒绝代码(在标准中没有其他要求的情况下),甚至导致崩溃?

19得票7回答
编译时计算编码n个不同状态所需的位数

编辑:在初始问题中有一个错误的公式,算法尝试做的与预期完全不同。我很抱歉并决定重新编写问题以消除所有的混淆。 我需要在编译时计算(结果将用作非类型模板参数)存储 n 个不同状态所需的最小位数:constexpr unsigned bitsNeeded(unsigned n); 或通过模板 ...

19得票3回答
“auto”关键字在编译时间上是否较慢?

自从C++11以来,我们可以使用auto a = 1+2代替int a = 1+2,编译器会自动推断a的类型。它是如何工作的?在编译时它会比我声明类型的方式更慢(需要更多操作)吗?

18得票6回答
编译时素数检查

我需要在编译时检查某个整数是否是质数(以将布尔值作为模板参数)。 我已经编写了可以完成此任务的代码:#include <type_traits> namespace impl { template <int n, long long i> struct...

18得票2回答
static_cast<T>(...) 是编译时还是运行时操作?

static_cast&lt;T&gt;(...) 是在编译时还是运行时执行的?我已经谷歌搜过了,但得到了不同的答案。 而 dynamic_cast&lt;T&gt;(...) 显然是运行时转换 - 但 reinterpret_cast&lt;T&gt;(...) 呢?

17得票1回答
编译时能否验证用户定义字面量的输入?

在下面的例子中,我希望在编译时得到告知:从 long 转换为 int 会改变值,就像如果我不使用用户定义字面量一样。请注意保留 HTML 标签。 #include &lt;cassert&gt; constexpr int operator "" _asInt(unsigned long ...

17得票1回答
通过fromList创建一个(非列表)数据结构是否实际上会创建列表?

本质上我想知道像这样的代码:let myCollection = Data.SomeCollection.fromList [1, 2, foo] 这个程序实际上在运行时确实像它表面上展示的那样,它创建了一个链表作为创建SomeCollection的中间步骤 - 或者如果这只是一种语法上的便利...

17得票4回答
除数组之外,是否可以在编译时填充其他数据结构?

在C++中,你可以这样做:static const char * [4] = { "One fish", "Two fish", "Red fish", "Blue fish" }; ... 这将为您提供一个漂亮的只读数组数据结构,不需要在运行时初始化任何CPU周期,因...

17得票12回答
在Xcode构建中出现错误:无法生成进程(参数列表太长)

我遇到了这个错误: "error: unable to spawn process (Argument list too long) ** ARCHIVE FAILED ** The following build commands failed: Co...

16得票4回答
在编译时加密/混淆字符串字面值

我希望在编译时对字符串进行加密/编码,以防止原始字符串出现在已编译的可执行文件中。 我看过几个示例,但它们不能将字符串字面值作为参数。请参见以下示例:template&lt;char c&gt; struct add_three { enum { value = c+3 }; }; ...