templates - D:显示给定类型是否具有可比性的模板约束

标签 templates d type-constraints

我将如何为以下结构编写模板约束

struct Foo (T, U) {
}

表示TU必须使用 < 进行比较?我的意思是两个 T s 可以与 < 进行比较和两个 U s 可以与 < 进行比较- 一个 TU可能是无与伦比的。

最佳答案

我相信这会满足您的要求,尽管可能有更简洁的解决方案:

struct Foo (T, U) if (is(typeof(T.init < T.init) : bool) 
                   && is(typeof(U.init < U.init) : bool) 
{ }

你可以用模板稍微清理一下:

enum bool isSelfComparable(T) = is(typeof(T.init < T.init) : bool);

struct Foo (T, U) if (isSelfComparable!T && isSelfComparable!U) { }

关于templates - D:显示给定类型是否具有可比性的模板约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282568/

相关文章:

c++ - std::numeric_limits 作为条件

c++ - C++中的函数地址文字在哪里?

D 语言是否有多个标准库和 GC 问题?

d - 如何在 Vibe.D 中迭代 JSON 数组?

swift - 类扩展typealias的属性类型约束

haskell - applicative 到底有多重要,而不是 "combining"?

c++ - 将 typeid 与模板一起使用

perl - 我正在尝试为 perl 中的错误消息的占位符创建一个模板。有什么建议么?

javascript - d服务器与javascript如何通信

c# - 条件类型约束参数