gpt4 book ai didi

c++ - C++ 模板可以推断返回类型吗?

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

我正在研究模板,想知道是否有任何方法可以使这样的代码正常工作。

template <typename T>
T foo (int a)
{
return a * 2;
}

int something = foo (123);

这里的问题是编译器无法推断类型。

我知道如果我在上述情况下使用它会起作用。

int a = foo <int> (123);

甚至

template <typename T>
T foo (T a)
{
return a * 2;
}
int a = foo (123);

编辑:为了澄清,我想知道是否有可能让代码在像这样使用时返回一个 double double x = foo (123); 而在像这样使用时返回一个 int int x = foo (123);

最佳答案

推断返回类型的一种方法(虽然不清楚您将使用它做什么)是使用模板化转换,例如

class foo
{
private:
int a_;
public:
template< class Return_type >
operator Return_type () const
{ return a_*2; }

foo( int const a ): a_( a ) {}
};

void bar()
{ int a = foo( 123 ); }

免责声明:代码未经编译器处理。

关于c++ - C++ 模板可以推断返回类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081814/

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