1
#include <vector>
#include <iostream>
#include <string>
using namespace std;
#include <vector>
#include <iostream>
#include <string>
using namespace std;
// Template-template argument must
// be a class; cannot use typename:
template<typename T, template<typename> class C>
void print2(C<T>& c) {
copy(c.begin(), c.end(),
ostream_iterator<T>(cout, " "));
cout << endl;
}
int main() {
vector<string> v(5, "Yow!");
print2(v);
} ///:~
Dieser Code sieht perfekt für mich. Aber dieses Snippet kann nicht in Mein Mac kompiliert werden. Die Fehlerinformation ist die folgendeVorlage Vorlage Argument in C++
note: candidate template ignored: substitution failure [with T = std::__1::basic_string<char>]: template template argument has
different template parameters than its corresponding template template parameter
void print2(C<T>& c) {
^
1 error generated.
Dieser Code wird kopiert von in C++ zu denken. Es kompiliert in gcc mit Version 3.3.1. Ich denke, die Definition von Vektor hat sich seitdem sehr verändert. – zhexuany
@zhexuany, bitte tu dir selbst einen Gefallen und werde dieses Eiszeitartefakt los. – SergeyA
"Ihre Implementierung könnte sogar mehr als das haben" - nein, es sind genau zwei. Alles andere ist nicht konform. –