“使用”的开销

Overhead of `using`

本文关键字:开销 使用      更新时间:2023-10-16

对于我的问题,我可以通过两种方式使用 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更可取,因为理想情况下,我想用各种类型调用这段代码。是的,这确实需要在课堂上。我刚刚极大地简化了这个例子。

在 B 中那样在本地定义类型是否有任何开销 [在生成的代码上]?

不,没有。

定义类型别名(如何处理using WrapperType = Wrapper<U>;(只会影响编译,并在运行时开始后完全删除。