C++0xのコンセプトの話
アキラさんのC++0xの資料を拝見して、コンセプトって、なんでインタフェースっていう名前にならなかったのか疑問に思ったのは自分だけ?
だって、インタフェースと機能は同じで、しばりが少ないってだけな印象なのに。。同じダックタイピングなのに。
いうなれば、コンセプトがインタフェースらしく振舞うのであれば、それは最早インタフェースだと思う。
C#のインタフェースの話
なんで継承/実装していないとキャストできないのか不思議。明示的に継承していない場合でも、関係なしにダウンキャストできていいと思うのですが。。
こんな感じ↓
using System;
interface IMyMeMine
{
void Hello();
}
class SayHello
{
public void Hello() { Console.WriteLine("Hello"); }
}
class Program
{
static void Main(String[] args)
{
Hello(new SayHello());
}
static void Hello<T>(T t) where T:IMyMeMine
{
t.Hello();
}
}
たとえばシステムのクラスをジェネリックに扱いたい場合に、ときどきやりたい。