gpt4 book ai didi

C++构造函数模板特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:56 25 4
gpt4 key购买 nike

我正在尝试为 std::string 参数创建一个专门的构造函数,但当我使用字符串参数调用它时,总是会使用另一个构造函数。

struct Literal : Expression
{
template <typename V>
Literal(V val)
{
value = val;
}
};

template <>
Literal::Literal(std::string const& val)
{
value = val.c_str();
}

两者是在类内定义还是在类外定义都没有关系,或者像发布的示例一样,只有特化是在类外定义的:当使用 std::string 调用时, 赋值 value = val 给出编译器错误。

我如何为 std::string 正确特化此构造函数模板?

最佳答案

你不知道。

您应该重载构造函数:Literal(const std::string&) ,您可以在 struct 中执行此操作声明。

编译器总是尝试在模板重载之前匹配非模板重载。

关于C++构造函数模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663166/

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