gpt4 book ai didi

c++ - `using`的开销

转载 作者:可可西里 更新时间:2023-11-01 15:36:52 30 4
gpt4 key购买 nike

对于我的问题,我可以通过两种方式使用 using 指令。他们基本上归结为这些选项:

template<typename U>
struct A {
private:

// Define our types
using WrapperType = Wrapper<U>;

public:

U *operator()(U *g) const {
// TODO: use WrapperType
}
};

或:

struct B {

template <typename U>
U *operator()(U *g) const {

// Define the types here instead.
using WrapperType = Wrapper<U>;

// TODO: use WrapperType
}
};

在这两种情况下,都会有其他的类模板参数。因此 B 仍将具有模板参数,即使它在这个简化示例中看起来并不像。

我的问题是:

B 那样在本地定义类型是否有任何开销? (与 A 相比)?

我不清楚类型声明如何影响生成的代码。代码必须实时运行,这将是代码库的核心。因此,如果有任何开销,我就不能使用 B

话虽这么说,B 在我们的例子中更可取,因为理想情况下我想用各种类型调用此代码。是的,这确实需要在类里面。我刚刚极度简化了这个例子。

最佳答案

Is there any overhead [on the generated code] of defining a type locally like in B?

不,没有。

定义类型别名(您对 using WrapperType = Wrapper<U>; 所做的)只会影响编译,一旦运行时开始就会完全删除。

关于c++ - `using`的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49976972/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com