Una cosa da tenere a mente è che i modelli C++ e i generici C# non sono esattamente gli stessi. Vedere questo answer per ulteriori dettagli su tali differenze.
Dalla pagina che hai collegato alla spiegazione di concetti C++ 0x, sembra che l'idea sia che in C++ si voglia essere in grado di specificare che il tipo di modello implementa determinate proprietà. In C#, il vincolo va oltre quello e costringe il tipo generico a essere "di" quel vincolo. Ad esempio, il seguente codice C#:
public GenericList<T> where T : IDisposable
dice che qualsiasi tipo usato al posto di T deve implementare l'interfaccia IDisposable. Analogamente, il codice seguente:
public abstract class ABC {}
public class XYZ : ABC {}
public GenericList<T> where T : ABC
dice che qualsiasi tipo usato al posto di T deve essere di tipo ABC o derivato da ABC.
L'idea del concetto C++ 0x indica solo che il tipo utilizzato al posto di T deve avere le stesse proprietà definite da ABC (o IDisposable) che non deve essere di quel tipo.
fonte
2009-01-31 00:21:16
se vola come un'anatra e caga come un'anatra, allora deve essere un'anatra? :-) – Zen
A meno che non sia un * concetto * di anatra. Sembra esserci una sottile differenza in quanto C# rafforza il fatto che il tipo deve essere del vincolo mentre un concetto dice semplicemente che deve avere quelle proprietà ma non deve essere di quel tipo. –