Ich habe diesen Code:
%Vor% Wenn ich foo()
als Template-Funktion mit der gleichen 'Signatur' für die Vorlage verwende, beschwert sich der Compiler nicht darüber, die Template-Argumente nicht anzugeben:
Warum muss ich also ein Argument für eine Template-Klasse mit einem Default-Parameter angeben, aber nicht für eine Template-Funktion? Gibt es etwas Subtilität, die ich vermisse?
Der Grund dafür ist, dass der Template Argument Deduction fehlgeschlagen ist. Aber ich möchte wissen warum.
Die korrekte Syntax, wie Nawaz bereits erwähnt hat, ist:
%Vor% Der Grund ist, dass B
die Vorlage ist und B<>
die Instanziierung der Vorlage mit dem Standardargument A
ist. Aber Sie brauchen <>
, um zu differenzieren, wenn Sie eine Instanziierung wünschen.
Tags und Links c++ templates templates-deduction default-parameters