当前位置: 首页 > 知识库问答 >
问题:

调用不带尖括号的模板化函数可以吗?

太叔超英
2023-03-14

对于在C 11中调用模板函数需要什么,我有点困惑,在C 11中为模板参数提供默认值。

例如,假设我有以下模板化函数

template <class T = double> void foo()
{
  /* Do something */
}

我想在代码中的某个地方调用它。所有这些电话都有效吗?

foo(); //Is this OK?
foo<>();
foo<int>();

它可以很好地编译GCC 4.7.2,但我不确定它是否完全正确。我猜我的不确定性可能来自要求使用空尖括号

模板默认参数

但是我假设在我的例子中,函数括号()是关键的区别吗?


共有1个答案

宇文鸿振
2023-03-14

对函数模板的函数调用,其中每个模板参数都是可推断的或具有默认值,可以使用空的尖括号,也可以省略它们,这两种方法都是有效的。

不同的是,如果您省略了尖括号,您将邀请重载解决方案也考虑非模板函数,这些函数碰巧被命名为foo,并且碰巧可以用相同的(在本例中为空)参数列表调用。

这在C11中没有改变。

 类似资料:
  • 问题内容: 今天有人告诉我,可以不带括号地调用一个函数。我能想到的唯一方法是使用类似或的函数。 但是,这些都需要加上括号,然后放在第一个平方上。我还考虑了将函数传递给某种事件处理程序的想法,例如: 但是,问题就变成了“如何在没有括号的情况下调用?” 那么这个谜题的解决方案是什么?如何在不使用括号的情况下调用Javascript函数? 问题答案: 有多种不带括号的函数调用方法。 假设您已定义此函数:

  • 今天有人告诉我,可以调用没有括号的函数。我能想到的唯一方法是使用像或这样的函数。 但这些要求在和上加上括号,让我们处于第一步。我还考虑了将函数传递给某种事件处理程序的想法,例如: 但是问题变成了“如何在没有括号的情况下调用?” 那么这个谜的答案是什么呢?如何在Javascript中调用函数而不使用括号?

  • 问题内容: 我一直使用泛型,并且总是看到这样使用尖括号:(例如)。 今天,在调用类似的静态方法之前,我遇到了泛型规范。真正的示例是:。 我从未见过这种用法,也无法在文档中找到这种特定用法。有人可以解释发生了什么吗? 问题答案: 这些被称为通用方法。 在Java 7之前,您必须指定通用引用的类型: 现在,编译器从上下文推断类型。

  • 问题内容: 考虑以下: 此代码返回 鉴于get_value是一个函数,我希望执行停止并返回错误,但事实并非如此。有人可以解释为什么python解释器允许这种语法而不是引发属性错误,在我看来,这可以节省我宝贵的时间。 问题答案: 如前所述,函数和方法是一流的对象。您通过在末尾加上一些括号(括号)来 称呼 它们。但是看来您想要更多的动机来解释为什么python甚至允许我们这样做。我们为什么要关心函数是

  • 本文向大家介绍基于js里调用函数时,函数名带括号和不带括号的区别,包括了基于js里调用函数时,函数名带括号和不带括号的区别的使用技巧和注意事项,需要的朋友参考一下 示例代码: 如以上代码: aaa 是将 hi() 的运行结果赋值给它,即 return 返回的匿名函数,此时有一个闭包,则每次调用 aaa 时都访问的同一个 a,aaa() 第一次运行结果为 1,第二次为2 而 bbb 将是将 hi 这

  • 如果我有一个默认模板类型的模板类,我必须编写模板尖括号。有没有可能避免这种情况? 示例: 到目前为止,我都是通过一个单独的名称空间和重新定义类来实现这一点的: 问题是,如果我想将类与其他类型一起使用,我必须检查名称空间detail_。有没有另一种解决方案,我还没有看到。