Come risposta qui: How can an incomplete type be used as a template parameter to vector here? l'utilizzo di tipo incompleto come argomento modello quando l'istanziazione di un componente del modello può comportare un comportamento non definito. Ma questa regola è vera quando abbiamo solo il puntatore/riferimento al componente del template con tipo incompleto come argomento? Anche in questo caso avviene l'instatia?Riferimento o puntatore a std :: vettore di tipo incompleto
Ad esempio:
// SomeAlgoInterface.hpp
#include <vector>
struct Result; // forward declaration
class SomeAlgoInterface
{
public:
virtual ~SomeAlgoInterface() = default;
public:
// the following line is definitely OK, ...
virtual void f1(const Result & result) = 0;
// ... but I'm not quite sure about the following one
virtual void f2(const std::vector<Result> & results) = 0;
};
In altre parole, è il codice di cui sopra valido o no?
Secondo gli esempi in [temp.inst]/4 , questa dichiarazione non causa l'istanziazione –