![]() |
1
4
尽管有人可能会发现 实际解决方法 像斯蒂芬·克利里的
在可以直接指定泛型的地方,从理论上讲,这是一个相当有趣的问题,C的当前类型系统无法解决这个问题。 一种你称之为 本身是通用的 ,被称为 高等级类型 . 请考虑以下示例(伪C):
在您建议的系统中,一个呼叫可能如下所示:
但问题是:我们如何键入函数
但是这个不行
. 我们不能参数化
我们需要的是一个符号
在您的情况下,您可以键入
我所知道的唯一支持这种泛型的语言是haskell:
在上看到这个haskellwiki条目
polymorphism
关于这个
|
![]() |
2
8
你不能只根据返回值来重载任何东西,所以这包括变量。 但是,您可以去掉该lambda表达式并编写一个实函数:
然后你想怎么称呼它:
|
![]() |
3
0
这是不可能的,因为代表 实例 在C中,不能有泛型参数。最接近的方法是将类型对象作为常规参数传递并使用反射。:( 在许多情况下,铸造 动态 帮助消除反射的痛苦,但是 动态 在创建新实例(如示例)时没有帮助。 |
![]() |
4
-1
不能这样做,因为泛型类型参数必须在运行时已知。必须使用Activator类:
你想做什么就做什么。您可以按以下方式编写:
编辑 布林迪的解决方案更好。 |
![]() |
SpeakX · 从模板参数类型构造类类型元组 1 年前 |
![]() |
Astor · 简化编译时二进制树类型的创建 1 年前 |
|
Ryan · 更改JS中数字的功能(出于教育目的) 1 年前 |
![]() |
Janilson · 如何解决这种多变的模板歧义 2 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 3 年前 |
![]() |
chenyuandong · Elixir中的元编程 7 年前 |
![]() |
Marcos Felipe · 基于存储的变量进行比较 7 年前 |