首页 > TAG信息列表 > compile-time

java-编译时的方法选择.如果参数可以有几种类型怎么办?

我被认为是Java编译器在编译时完成了方法选择的所有工作(或者我错了吗?).也就是说,它将通过检查类层次结构和方法签名来准确地决定在编译时在哪个类中使用哪种方法.然后,在运行时所需要做的就是选择要调用其方法的对象,这只能处理继承链. 如果是这样,这如何运作? int action = getAc

在C#的运行时构造函数

Lambda表达式在编译时进行评估,因此以下代码不会生成100个不同的函数.有没有简单的机制可以达到上述效果?我意识到这不是非常有效的性能明智的选择. List<Action> actions = new List<Action>(); for (int i = 0; i < 100; ++i) actions.Add(() => Execute(100100100 + i));

java-自动生成值对象

给定一个或多个接口,生成类实现的最佳方法是什么? interface Vehicle { Engine getEngine(); } @Generated class Car implements Vehicle { private final Engine engine; public Car(Engine engine) { this.engine = engine; } public Engine

c-可变参数模板异构容器

我需要实现具有可变元素的可变参数模板容器类,该类可以通过这些元素进行迭代.我的第一个想法是使用带有可变参数的std :: tuple成员的make类,但是不可能通过类似数组的方式(通过循环)从tuple中获取元素: struct A {void prnt(){std::cout<<"A\n";} }; struct B {void prnt(){st

C 98/03 std :: is_constructible实现

我的爱好库的基本组件必须与C 98和C 11编译器一起使用.为了学习和享受自己,我创建了几种类型支持功能的C 98实现(如enable_if,conditional,is_same,is_integral等…),以便在没有C 11支持时使用它们. 然而,当我实现is_constructible时,我被卡住了.有没有任何模板魔术(某种SFINAE),我

c – 什么是编译时多态,为什么它只适用于函数?

什么是编译时多态,为什么它只适用于函数?解决方法:回过头来,“编译时多态”意味着函数重载.它仅适用于函数,因为它们都可以超载. 在当前的C中,模板会改变它. Neil Butterworth已经举了一个例子.另一个使用模板专业化.例如: #include <iostream> #include <string> template <class

c – 确定函数返回类型的最简单方法

给出一个非常简单但冗长的功能,例如: int foo(int a, int b, int c, int d) { return 1; } // using ReturnTypeOfFoo = ??? 什么是在编译时确定函数的返回类型(ReturnTypeOfFoo,在此示例中为:int)而不重复函数的参数类型的最简单和简洁的方法(仅通过名称,因为已知该函数没有

c – constexpr函数中的编译时或运行时检测

当cte 11中引入constexpr时,我很兴奋,但遗憾的是我对其有用性做出了乐观的假设.我假设我们可以在任何地方使用constexpr来捕获文字编译时常量或文字编译时常量的任何constexpr结果,包括这样的事情: constexpr float MyMin(constexpr float a, constexpr float b) { return a<b?a:b;

c – 强制在编译期间评估常量表达式?

几天前,我询问编译器决定是否在编译期间计算constexpr函数. When does a constexpr function get evaluated at compile time? 事实证明,只有在编译时才会评估constexpr,如果所有参数都是常量表达式,并且您指定给它的变量也是常量表达式. template<typename base_t, typename expo

c – 跟踪编译器以查看它在某些文件上花费了多少时间

编译我的项目需要很长时间,我想我想改进它的编译时间.我要做的第一件事是将编译时间分解为单个文件. 所以编译器告诉我例如: boost/variant.hpp: took 100ms in total myproject/foo.hpp: took 25ms in total myproject/bar.cpp: took 125ms in total 然后我可以专门尝试通过引入

C中“富类型”结构的开销

我想在编译时跟踪当前采用相同类型参数的一些函数的“类型”信息.这是一个例子;假设我有两个函数getThingIndex(uint64_t t)和getThingAtIndex(uint64_t tidx).第一个函数将参数视为事物的编码,对索引进行非平凡的计算,并返回它.然后,可以通过调用getThingAtIndex来获取实际的“东

c – 使用编译时常量(如果已知)

我有一个神秘类型T的值(对于这个例子,我们可以假设T是一个整数类型).我想在一些模板函数中使用此值作为模板参数(对于此示例,std :: integral_constant的参数).问题是T可能不是常数类型.如果它不是常量类型,我想在我的模板函数中默认为0.但是,如果它是常数,我想使用值本身,因为它是

C模板作为模板的参数

我遇到了以下问题.我有以下模板编号: template<int n> struct Number { static const int value = n; }; 现在假设我想在编译时添加两个这样的数字.具体来说,我想让以下代码片段起作用: //The following code should display 7: std::cout << Number_add< Number<3>, Number<4

c – 如何使用内联函数的不同重载,具体取决于编译时参数?

我有一个性能关键的内联函数,内联T函数(T a,T b,int p).如果已知p为零,则可以对其进行相当优化.但是,我不能使用’if’并惩罚所有其他情况.我想要的是优化仅在编译时我知道p为零的函数.有没有一种干净的方法,可能使用模板魔术? 编辑 我不能使用不同的命名函数/不兼容的重载(我不知道

c – 在编译期间是否可以错误检查case语句选项?

如何以这样的方式重写此代码:只要用户通过有效方向,就会始终显示正确的状态(CA,AL等)字符串. 即如何确保编译时枚举方向中的每个enum_types都有一个有效的case语句,而不是运行时? 对于.例如.我故意评论了东方的案例陈述.有没有办法在编译时捕获它. 我的直觉是(否)这就是语言提供默认

C编译时状态变量

我有兴趣做这样的事情: void ISR() { MEASURE_TIME(counters) do_something(); MEASURE_TIME(counters) do_something_else(); MEASURE_TIME(counters) do_another_thing(); MEASURE_TIME(counters) do_one_last_thing(); MEASURE_TIME(coun

c – 继承编译时间还是运行时间?

在c中,继承是在运行时还是编译时发生的? 例子?解决方法:在C中,继承本身(没有多态)是一个编译时功能.在编译的代码中,两者之间几乎没有差别 struct foo : bar {}; 和 struct foo { bar b; }; 除了访问其成员的偏移量之外,在编译的二进制文件中,bar不会有任何与“foo”相关的“知识

c# – 如何访问类型的“静态”实例成员?

我想访问“静态”(即在编译时)给定类型的实例成员(当然要检索它们的静态属性,而不是实际值或类似的东西). 考虑: interface IFoo { int X { get; } } 我想直接访问X以检索编译时已知的内容,例如: Console.WriteLine(typeof(IFoo::X).Name); 反射是运行时,我问的是编译时.解决方

c# – 使用指令组织,重新运行测试?

在提交之前,我更喜欢在我的C#解决方案中运行所有百项单元测试,因为它们只需要几分钟就可以运行.但是,如果我已经运行它们,一切都很好,然后我决定在我的解决方案中组织using指令,是否真的有必要重新运行单元测试?我有一个宏,它遍历解决方案中的所有文件,并在每个文件上运行Visual Stu