http://dsource.org/projects/ の全プロジェクトの最終更新日時から,プロジェクト活性度ランキング(完全版)を作ってみました*1.
ではどうぞ.
dsource.orgのプロジェクト活性度ランキング(暫定)
追記:完全版ができました(dsource.orgのプロジェクト活性度ランキング(完全版) - ...ing logging 3.0).
http://dsource.org/projects/ の全プロジェクトの最終更新日時から,プロジェクト活性度ランキング(暫定)を作ってみました*1.
ではどうぞ.
typename
まずはC++.
#include <iostream> template <typename T> struct A { typename T::X v; }; struct B { typedef int X; }; void main() { A<B> x; x.v = 42; std::cout << x.v << std::endl; }
次にD言語.
import std.stdio; struct A(T) { T.X v; } struct B { alias int X; } void main() { A!B x; x.v = 42; writeln(x.v); }
何でDはtypenameのようなものがいらないのかなと思った.
むしろC++の方は,そこに型ではなく値が現れる場合があるのだろうか?
思いつかないんだけど.
@disableな関数をmixinするとどうなるか
mixin template Foo(T) { void f(){} void f(T){} } template Bar(T) { mixin Foo!T; @disable void f(){} @disable void f(T){} } mixin template Boo(T) { @disable void f(){} @disable void f(T){} } template Woo(T) { mixin Boo!T; void f(){} void f(T){} } void main() { //Bar!int.f(); // disable //Bar!int.f(1); // disable Woo!int.f(); Woo!int.f(1); }
mixinした関数に付いている @disable は無視されるようだ.
ということは,diffのネタは @disable とはちょっと違うな・・・.
(Dis)patchがあるならば
(Dis)patchがあるならdiffがあっても・・・というわけで,いらんことを思いついた.
template Hoge(T) { void f(){} void f(T){} } template Fuga(T) { void f(T){} } diff Hoge!int Fuga!int Diff; void main() { Diff.f(); Diff.f(int); // Hoge!intにもFuga!intにもf(int)があるのでdiffで消えるというネタ }
なんだこれは・・・@disableか・・・.
(注)D言語のコードではありません.