gpt4 book ai didi

c++ - 在现代 C++ 中是否可以将字符串文字作为参数传递给 C++ 模板?

转载 作者:IT老高 更新时间:2023-10-28 14:00:48 41 4
gpt4 key购买 nike

是否可以在“现代 C++”(C++17 或更高版本)中将字符串文字作为参数传递给 C++ 模板?

我意识到你可以使用构造函数参数来做到这一点;我只是认为将它作为模板参数会更方便,而不是深埋在 cpp 文件中。我很好奇这是否是现代 C++ 的一个新特性。请参阅下面的伪代码,了解我正在尝试做的事情:

伪代码示例:

// Header File /////////////////////////
template<constexpr string Name>
class ModuleBase {
public:
ModuleBase();
string name;
};

class xyz : ModuleBase<"xyz"> {
public:
xyz();
};

// Cpp File //////////////////////////
template<string_literal Name>
ModuleBase<Name>::ModuleBase() {
name = Name;
}

xyz::xyz() : ModuleBase() {

}

最佳答案

是的,在 .

问题在于很难确定模板非类型参数的唯一性。

添加 <=>飞船运算符(operator)比较。如果它是非用户提供的(并且仅基于非用户提供的 <=> 依次递归地重复)(和 few other requirements; see p0732 ),则该类型可以用作非类型模板参数。

此类类型可以从原始 "strings" 构造在 constexpr构造函数,包括使用 扣除指南,使它们自动调整大小。

由于存储数据的大小可能会成为类型的一部分,因此您需要将类型设为 auto typed non-type parameter。或其他自动推断的类型。


请注意,将模板的实现放在 cpp 文件中通常是个坏主意。但这是另一个问题。

关于c++ - 在现代 C++ 中是否可以将字符串文字作为参数传递给 C++ 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51195445/

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