compile-time相关内容
受这个问题的启发,我想知道是否可以引入一些编译时检查来检测是否给定的两个模板实例: 模板班级圣殿...typedef TemplstringInstance;typedef TempldoubleInstance; 是根据相同的定义构建的,或者它们是根据 Templ 模板的不同专业化构建的 因此,基本上,假设的
..
假设我们有一个模板函数,其非类型参数为 const char * ,如下所示: 模板无效print(){std :: cout
..
从ant文件构建此项目后,将收到一个jar,其中包含我构建的所有类.当我尝试运行此jar时,出现以下错误: 线程“主"中的异常java.lang.NoClassDefFoundError:javax/media/j3d/SceneGraphObject 此错误表明找不到我使用的其中一个jar,特别是java3d中的 j3dcore.jar .但是,当通过ant构建到类文件中进行编译时,此ja
..
如果我输入以下内容: 公共响应GetArticles(字符串过滤器= String.Empty){//身体} Visual Studio给我这个错误: “过滤器"的默认参数值必须为编译时常量 如果我将 String.Empty 更改为经典的“" ,则它是固定的. 但是我仍然对 String.Empty 的问题及其行为感到好奇. 解决方案 为什么String.Em
..
是否有一种方法(模板,宏,其他任何方法)可以替代在 编译时从 common 方法对 hidden_in_derived 的调用,因此Derived实例会调用它自己的 hidden_in_derived ( 无 使Base中的 hidden_in_derived 虚拟) ? #include class Base { public: void com
..
搜索没有任何结果之后,我想问一个问题,关于包含可选参数的子例程以及编译器如何处理它们(运行时/编译时).考虑下面的示例程序. module CONTAINS_ABC contains subroutine ABC( a, b, c) implicit none real, intent(in) :: a real, intent(in),
..
在编译时或运行时是否执行使用编译时常量整数的浮点计算?例如,除法运算是在何时计算的: template inline float fraction() { return static_cast(A) / B; } 解决方案 我相信它是实现定义的,但是大多数编译器会在编译时评估常量表达式.但是,即使您没有进行以下修改: templ
..
所以我知道,如果我定义一个 const Nim会在编译时评估分配给它的任何内容,因此我可以执行以下操作: proc compileTimeCode:bool = #将代码放在此处 返回true const _ = compileTimeCode () 然后我可以将代码放入 compileTimeCode 过程。 此方法有效,但看起来很杂乱,过于复杂且不直
..
在编译时如何枚举结构或类中的名称和类型? 即执行以下操作: struct Foo { int x; int y; } 字符串序列化!(A)(A a){ ... magic ... } auto f = Foo(1,2); 序列化(f); -> “ x:1,y:2” 谢谢 克里斯。 解决方案 像这样: forea
..
在C中, const 限定符使对象成为只读对象,而不是常量表达式。例如,不可能使用 const int 变量来标注数组的尺寸: const int n = 10; int arr [n]; / *编译时错误* / 这是什么技术原因? 我不知道该对象实际上是一个常量值吗?认为我的问题是的精确重复项,是否可以使用const变量来声明 中的数组?因为
..
随着我的项目在过去的一年中不断发展,其构建时间也随之增加。在过去的几个月中,时间从4分钟缩短到了大约7分钟(时间包括GitHub拉取,单元测试等)。 我已经使用 -Xfrontend -debug-time-function-bodies 进行了调查,以找出编译较慢的行,并更改了该代码。 我认为现在这是项目规模的问题; 182个Swift文件,≈31K行。 23个情节提要,52个XIB
..
有人可以向我解释为什么 ArrayIndexOutOfBoundsException 是运行时异常而不是编译时错误吗? 在明显的情况下,当索引为负数或大于数组大小时,我不明白为什么它不能成为编译时错误。 :尤其是在编译时知道数组的大小甚至是索引的情况下,例如 int [] a = new int [10]; a [-1] = 5; 这应该是编译错误。 解决方案 只能在运行时定义数组
..
在Objective-C中,当您声明实例变量时,可以像在编译时那样检查它是否符合赋值协议: id变量; 是否可以在编译时检查分配给变量的对象是否符合两个单独的协议?如: id变量; 我知道我可以使用 conformsToProtocol进行运行时检查:和 res
..
我很清楚使用 static_cast 而不是使用C风格的指针类型转换的优点。 如果指针类型不兼容,则: static_cast 将产生一个编译结果源代码中特定行的时间错误 C样式转换可能导致程序执行中“随机”点的运行时错误 但是我找不到非指针类型的任何类似示例。 ,两种类型的转换方法对于非指针类型都产生相同的结果。 是正确的,还是我错过了任何事情? 如果可以,
..
我已经实现了 constexpr 编译时的哈希函数,如果调用为 $ b $,则可以很好地工作(即在编译时进行评估)。 b constexpr自动哈希= CompileTimeHash(“ aha”); 但是我需要在实际代码中使用它作为函数的自变量,如 foo(CompileTimeHash(“ aha”)); // foo不是constexpr
..
在我发现它不符合标准之前,我已经嵌套了与VS 2015一起使用的部分专用模板代码。我希望如此,所以我扭曲了代码以克服前一个问题,并且那个现在已经遇到了困难。 / p> 使用可变参数模板和部分专业化,我想在给定固定参数集的情况下在编译时填充数组。 我想要实现的目标似乎也类似于此答案,但是我没有设法使它起作用。 p> 请考虑以下程序: #include
..
由于 constexpr 的扩展版本(我认为是C ++ 14),因此可以声明 constexpr 函数,可以用作“真实的”。 constexpr 。即,代码在编译时执行,或者可以充当内联函数。因此,什么时候可以使用此程序: #include constexpr int foo(const int s){ return s + 4; } int ma
..
我想比较元编程和c ++ 0x中constexpr的使用。 然后我在两个模型中都编写了一个fib函数。 当我使用元编程模型时,因为它是在编译时计算出来的,所以答案打印很快。但是当我使用constexpr函数时,它将在运行时而不是在编译时计算值。 我使用g ++(gcc)4.8。有人能帮助我吗? #include 使用命名空间std; #define NUM
..
这是此主题的某种后续版本,并涉及了它的一小部分。与上一个主题一样,让我们考虑一下,我们的编译器对 std :: initializer_list 和 constexpr 函数c> std :: array 。现在,让我们直接说清楚。 这行之有效的: #include #include int main() {
..
我真的找不到任何用途。我的第一个想法是,我可以使用它来实现“按合同设计”,而无需使用这样的宏: struct S { S(constexpr int i):S(i){static_assert(i
..