如何解决本地数组上 clear 的模板重载不明确?
How to solve ambiguous template overload of clear on local array?
目前正在尝试获取最新版本的facebook的flint进行编译。
D 编译器版本 2.081.1 的代码在与
类似的构造上失败
import std.stdio;
void main()
{
long[] foo = [];
foo.clear();
}
下面是示例的简短 link:https://run.dlang.io/is/ZSsPNS
与消息:
onlineapp.d(5): Error: template object.clear cannot deduce function
from argument types !()(long[]), candidates are:
/dlang/dmd/linux/bin64/../../src/druntime/import/object.d(2855):
object.clear(T : Value[Key], Value, Key)(T aa)
/dlang/dmd/linux/bin64/../../src/druntime/import/object.d(2860):
object.clear(T : Value[Key], Value, Key)(T* aa)
如何解决这个歧义?
非常感谢任何帮助!
那里没有歧义 - clear
是一个对关联数组而不是动态数组进行操作的函数,long[]
是这样。
现在,这当然并不意味着代码有效。 :p
问题是 clear
在 2.066 中重命名为 destroy
,并在 2.070 中删除。然后在2.071引入了current函数,清除AA的内容
所以,总而言之:将 clear
替换为 destroy
,应该可以正常工作。
目前正在尝试获取最新版本的facebook的flint进行编译。
D 编译器版本 2.081.1 的代码在与
类似的构造上失败import std.stdio;
void main()
{
long[] foo = [];
foo.clear();
}
下面是示例的简短 link:https://run.dlang.io/is/ZSsPNS
与消息:
onlineapp.d(5): Error: template object.clear cannot deduce function
from argument types !()(long[]), candidates are:
/dlang/dmd/linux/bin64/../../src/druntime/import/object.d(2855):
object.clear(T : Value[Key], Value, Key)(T aa)
/dlang/dmd/linux/bin64/../../src/druntime/import/object.d(2860):
object.clear(T : Value[Key], Value, Key)(T* aa)
如何解决这个歧义?
非常感谢任何帮助!
那里没有歧义 - clear
是一个对关联数组而不是动态数组进行操作的函数,long[]
是这样。
现在,这当然并不意味着代码有效。 :p
问题是 clear
在 2.066 中重命名为 destroy
,并在 2.070 中删除。然后在2.071引入了current函数,清除AA的内容
所以,总而言之:将 clear
替换为 destroy
,应该可以正常工作。