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

艾琳(Irenej Marc)

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

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);

干杯和hth。-阿尔夫

推断返回类型的一种方法(尽管目前尚不清楚您将使用该返回类型)是使用模板化转换,例如

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 ); }

免责声明:编译器未修改过的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C ++中可以推断类型转换为模板类型吗?

可以指定C ++ 20模板化的lambda来推断嵌套在参数中的类型吗?

c ++模板参数类型推断

Lambda的C ++模板类型推断

C ++如何在模板中推断Callable的类型(参数列表和返回值)

变量模板可以推断类型吗?

C ++自动推断模板成员指针的类型

如何让C ++从Lambda推断模板类型参数?

可以安全引用具有与模板不兼容的模板参数的C ++模板类型吗?

从成员类型推断类型的C ++函数模板?

C++ 函数模板:必须使用 & 作为参数类型和返回类型吗?

C ++模板可以(仅)匹配一种类型或单个其他类型的列表吗?

可以推断模板函数中的参数类型吗?

C ++ 11翻译可变参数模板以推断类类型

如何推断C ++ 11中的模板参数类型?

C ++模板参数推断

具有箭头符号的C ++模板自动返回类型需要decltype吗?

可以忽略c ++ 11的尾随返回类型功能,而支持c ++ 14的函数返回类型推导功能吗?

C++ struct 静态成员变量可以隐藏非类型模板参数吗?

在C ++中,您可以像比较类型一样比较模板吗?

c ++ 17中的非类型模板参数可以是decltype(auto)吗?

自动返回值推断和C ++静态类型

Qt C ++ Lambda表达式无法推断返回类型

C#-隐式转换或推断通用返回类型

是否可以将使用占位符为推断的类类型指定类型的非类型模板参数传递给C ++ 2a中的另一个模板?

在C ++中推导模板返回类型

C++ 模板方法未知返回类型

C ++函数返回类型作为模板

C ++模板返回操作符的类型[]