...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

dsource.orgのプロジェクト活性度分布


縦軸がそのプロジェクトの最終更新日時で,横軸がそのプロジェクトの全プロジェクト中における最終更新日時順位(=活性度ランキングの順位)です.
こうしてみると,割と普通な感じがします.
何か面白いグラフにできないですかねえ.

dsource.orgのプロジェクト活性度ランキング(暫定)

追記:完全版ができました(dsource.orgのプロジェクト活性度ランキング(完全版) - ...ing logging 3.0).



http://dsource.org/projects/ の全プロジェクトの最終更新日時から,プロジェクト活性度ランキング(暫定)を作ってみました*1
ではどうぞ.

*1:C++とboostで(ボソッ

続きを読む

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言語のコードではありません.