对于我的问题,我可以通过两种方式使用 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/