为什么需要在此C ++模板中指定类型?

用户名

我有一个最小的,人为设计的C ++代码示例,带有带有默认类型参数的模板结构:

#include <iostream>
using namespace std;

template <class T=int>
struct AddsFourtyTwo {
    template <class U>
    static U do_it(U u) {
        return u + static_cast<T>(42);
    }
};

int main() {
    double d = 1.24;
    std::cout << AddsFourtyTwo::do_it(d) << std::endl;
}

当我尝试编译此代码时,使用g ++ 4.9.1时出现以下错误:

$ g++ test.cpp
test.cpp: In function 'int main()':
test.cpp:14:18: error: 'template<class T> struct AddsFourtyTwo' used without template parameters
     std::cout << AddsFourtyTwo::do_it(d) << std::endl;
                  ^

如果我为T指定int,则它将编译并产生预期的输出(43.24)。我的问题是,为什么要这样做?如果仍然需要指定类型,则默认类型参数在AddsFourtyTwo的定义中起什么作用?

克里斯

你并不需要指定类型,但使用模板作为实际类型的语言不允许没有指定一些参数列表:

std::cout << AddsFourtyTwo<>::do_it(d) << std::endl;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C++ 模板在参数中指定类型

来自分类Dev

为什么我们需要在fdisk中指定分区类型,然后再在mkfs中指定分区类型?

来自分类Dev

什么时候需要在模板专门化的第二个<>中指定类型?

来自分类Dev

为什么我需要在Swift的类中指定变量的类型?

来自分类Java

Java:为什么需要在浮点文字中指定'f'?

来自分类Dev

为什么需要在UITableViewCell中指定redirectIdentifier?

来自分类Dev

为什么需要在绑定中指定 ElementName 和 DataContext?

来自分类Dev

为什么需要在此处添加类型,还有更好的方法吗?

来自分类Dev

为什么我需要在 C 中指定引用和指针而不是普通变量

来自分类Dev

什么时候需要在lambda表达式中指定参数类型

来自分类Dev

何时在 C 中指定函数类型?

来自分类Dev

为什么需要在settings.xml文件中指定存储库

来自分类Java

为什么需要在接口中指定参数名称?

来自分类Java

为什么我们需要在Spring中指定HttpMessageConverter?

来自分类Dev

为什么不需要在构造函数中指定变量?

来自分类Dev

为什么我不需要在邮件中指定SMTP服务器?

来自分类Java

有什么原因为什么需要Java 8 lambda语法中指定参数类型?

来自分类Dev

C ++-指定模板值类型

来自分类Dev

为什么我需要在C#显式实现中将'this'转换为接口类型?

来自分类Dev

如何在此COMMON语句中指定类型?

来自分类Dev

什么时候需要在EF的DbContext中指定DbSet?

来自分类Dev

为什么在此foldLeft的Scala实现中需要类型声明

来自分类Dev

为什么我们需要在给出模板类型时加上括号

来自分类Dev

为什么要在Inno Setup的ExtractTemporaryFiles函数中指定路径?

来自分类Dev

为什么需要在Typescript中键入强制类型转换?

来自分类Dev

在POST的情况下,为什么需要在response_with中指定:location => some_url(@object)

来自分类Dev

为什么我们需要在Rust中指定所有依赖项(包括传递对象)?

来自分类Dev

有什么方法可以在流程中指定“非”类型?

来自分类Dev

C# - 在子类中指定超类的类型参数?

Related 相关文章

  1. 1

    C++ 模板在参数中指定类型

  2. 2

    为什么我们需要在fdisk中指定分区类型,然后再在mkfs中指定分区类型?

  3. 3

    什么时候需要在模板专门化的第二个<>中指定类型?

  4. 4

    为什么我需要在Swift的类中指定变量的类型?

  5. 5

    Java:为什么需要在浮点文字中指定'f'?

  6. 6

    为什么需要在UITableViewCell中指定redirectIdentifier?

  7. 7

    为什么需要在绑定中指定 ElementName 和 DataContext?

  8. 8

    为什么需要在此处添加类型,还有更好的方法吗?

  9. 9

    为什么我需要在 C 中指定引用和指针而不是普通变量

  10. 10

    什么时候需要在lambda表达式中指定参数类型

  11. 11

    何时在 C 中指定函数类型?

  12. 12

    为什么需要在settings.xml文件中指定存储库

  13. 13

    为什么需要在接口中指定参数名称?

  14. 14

    为什么我们需要在Spring中指定HttpMessageConverter?

  15. 15

    为什么不需要在构造函数中指定变量?

  16. 16

    为什么我不需要在邮件中指定SMTP服务器?

  17. 17

    有什么原因为什么需要Java 8 lambda语法中指定参数类型?

  18. 18

    C ++-指定模板值类型

  19. 19

    为什么我需要在C#显式实现中将'this'转换为接口类型?

  20. 20

    如何在此COMMON语句中指定类型?

  21. 21

    什么时候需要在EF的DbContext中指定DbSet?

  22. 22

    为什么在此foldLeft的Scala实现中需要类型声明

  23. 23

    为什么我们需要在给出模板类型时加上括号

  24. 24

    为什么要在Inno Setup的ExtractTemporaryFiles函数中指定路径?

  25. 25

    为什么需要在Typescript中键入强制类型转换?

  26. 26

    在POST的情况下,为什么需要在response_with中指定:location => some_url(@object)

  27. 27

    为什么我们需要在Rust中指定所有依赖项(包括传递对象)?

  28. 28

    有什么方法可以在流程中指定“非”类型?

  29. 29

    C# - 在子类中指定超类的类型参数?

热门标签

归档