gpt4 book ai didi

c++ - 基于返回类型的转换和重载扣除

转载 作者:行者123 更新时间:2023-11-30 01:03:37 26 4
gpt4 key购买 nike

我在 C++ 核心指南中看到,最好从函数返回输出值。

我想了解这对通用代码是否方便。

例如,为了将一个字符串转换为某个值,我通常会这样做:

template<class T>
T convertTo(const std::string& value)
{
// Do conversion
return convertedValue;
}

// Usage
convertTo<float>("test");

在不指定类型的情况下我会这样做:

template<class T>
void convertTo(const std::string& value, T& outputValue)
{
// Do conversion
// outputValue = convertedType
}

// Usage
float myVar{};
convertTo("test", myVar);

我也知道你可以这样做:

auto convertTo(const std::string& value, anotherInputPerhaps) ->decltype(myexpression)
{
// get the type to return basing on anotherInputPerhaps
return /*convertedValue*/
}

这里的问题是如何获得正确的转换值,可能不传递任何输入或可能使用默认值。这可能吗?

谢谢

[编辑] 寻找不会引入开销的东西

最佳答案

您可能会返回带有转换运算符的类,例如:

struct Converter
{
template <typename T>
operator T() const /*&&*/ { /*Do conversion*/ return {}; }

const std::string& s;
};

Converter convert(const std::string& value)
{
return { value };
}

使用方法:

float f = convert("test");
int i = convert("test");
std::vector<int> v = convert("test");

Demo

关于c++ - 基于返回类型的转换和重载扣除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52833073/

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