struct Value {
using a_type = int;
a_type f() { return 1; }
};
template<typename T>
struct Wrapper {
T t;
auto call_f() { return t.f(); }
};
int main() {
Wrapper<Value> w;
Wrapper<int> w2;
w.call_f();
}
Dies kompiliert in Clang und GCC. Wrapper<int>
wird instanziiert, obwohl der Rückgabetyp Wrapper<int>::call_f()
nicht abgeleitet werden kann (es gibt keine int::f()
). Es schlägt nur fehl, wenn w2.call_f()
aufgerufen wird.Template Instanziierung mit undefinierten Memberfunktion Rückgabetypen
Ist dieser Teil des C++ - Standards, und kann erwartet werden, dass er auf allen Compilern funktioniert?