错误实例化redBlackTree模板

时间:2012-11-08 19:02:15

标签: d template-meta-programming dmd

我在使用字符实例化RedBlackTree容器时遇到问题,但它可以使用整数:

import std.stdio;
import std.container;

void main()
{
        auto r1 = redBlackTree!(int)();   // works
        auto r2 = redBlackTree!(char)();  // error instantiating
}

我正在使用DMD32 D Compiler v2.060。

有什么想法?感谢。

1 个答案:

答案 0 :(得分:6)

您需要使用可比较的类型(即可以使用<运算符或提供您自己的比较器作为第二个模板参数

char(和wchar)仅适用于数组,因为一个char不一定与unicode(UTF8版本)中的实际字母相关,这有其他问题会导致新编码器失效在D

另一方面,

dchar将始终对应一封信,因此可与另一封信相媲美,

D中的经验法则总是使用dchar,除非是字符串类型(甚至考虑使用dstring)