Ich versuche, einige SFINAE in einer Templatestruktur zu verwenden. Ich mein Problem auf folgendes reduziert und diese Arbeit machen könnte:Ungültige Verwendung des unvollständigen Typs (SFINAE)
template<bool mybool>
struct test {
void myfunc();
};
template<bool mybool>
void test<mybool>::myfunc() {
std::cout << "test true" << std::endl;
}
template<>
void test<false>::myfunc() {
std::cout << "test false" << std::endl;
}
int main(int argc, char ** argv) {
test<true> foo;
test<false> bar;
foo.myfunc();
bar.myfunc();
}
Mit diesem Code, erhalte ich das Ergebnis:
test true
test false
Allerdings, wenn ich, dass meine struct test
mit mehr als einem betrachten will Template-Parameter, habe ich versucht, die obigen wie folgt:
Ich bekomme eine ungültige Verwendung von unvollständigen Typ 'Struct Test'.
Gehe ich in die falsche Richtung? Gibt es eine Möglichkeit zu tun, was ich tun möchte? Danke für Ihre Hilfe!
Haben Sie 'foo.myfunc bedeuten()', wenn Sie 'foo.test()' geschrieben hat? – bitmask
Sie haben "myfunc" im zweiten Beispiel falsch geschrieben. Es sollte 'my_func' sein. Bitte versuchen Sie Ihre Beispiele, bevor Sie sie veröffentlichen. – pmr