gpt4 book ai didi

c++ - 模板参数中使用的 const & (ref)

转载 作者:行者123 更新时间:2023-11-30 03:53:57 25 4
gpt4 key购买 nike

我在一些代码中看到了以下内容:

template<const Foo& bar>

有人告诉我它的目的是处理大型结构。

难道我们不能在代码中直接使用 const & 非模板化参数吗?
使用 const 引用作为模板参数将对象引用作为参数传递可以被认为是一种好的做法吗?

最佳答案

这是一个 non-type template parameter ,恰好是 const Foo& 类型。

无论它的用途是什么(“大结构”并不是真正的那个描述性的),像所有非类型模板参数一样,它的优点是在编译时可用(例如在元程序中),它的缺点是你必须在编译时有它的值。它是一个编译时常量可能也有助于编译器更好地优化它。

这里有一些例子:

struct Foo {};

/////////////////////////////////
// Type template parameter :
template <class T>
struct TypeParame {
T const &tRef; // T is a type
};

/////////////////////////////////
// Non-type template parameters :

// Integral type
template <int I>
struct NonTypeParam {
// I is a value
enum { constant = I };
};

// Reference
template <Foo const &F>
struct RefParam {
// F is a value again
Foo const &ref = F;
};

// Pointer
template <Foo const *F>
struct PtrParam {
// F is still a value
Foo const *ptr = F;
};

// More are possible, but...

// error: 'struct Foo' is not a valid type for a template non-type parameter
template <Foo F>
struct ValParam {};

关于c++ - 模板参数中使用的 const & (ref),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841605/

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