错误实例化redBlackTree模板

YGL*_*YGL 5 d dmd template-meta-programming

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

import std.stdio;
import std.container;

void main()
{
        auto r1 = redBlackTree!(int)();   // works
        auto r2 = redBlackTree!(char)();  // error instantiating
}
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?谢谢.

rat*_*eak 6

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

char(和wchar)仅用于数组,因为它char不一定与unicode(UTF8版本)中的实际字母有关,这有另外的问题会在D中绊倒新的编码器

dchar 另一方面,它总是对应一封信,因此与另一封信相当,

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