Prenons un exemple:Est-il garanti que la déduction prévue utilisateur Invoke des paramètres du modèle de modèle guide
#include <type_traits>
#include <string>
template <template <class> class TT> //#1
struct Foo {
static void foo() {
static_assert(std::is_same_v<decltype(TT("abc")), TT<std::string>>);
}
};
template <class T>
struct Bar {
Bar(T) {}
};
template <class T>
Bar(T) -> Bar<std::string>; //#2
int main() {
Foo<Bar>::foo();
}
[clang] ainsi que [gcc] les deux semblent utiliser des guides de déduction fournis par l'utilisateur (# 2) lorsque déduisant le paramètre de modèle de modèle paramètre de modèle (# 1). Est-ce une fonctionnalité conforme aux normes?
Je m'attendais vraiment à cette réponse, mais si cela se passait mal ... eh bien je vais le reprendre;) –
comme petite question: vous pensez que les guides de déduction automatique ne devraient pas être appliqués non plus? –
@ W.F. Ok, j'ai complètement renversé la réponse :) – Barry