Quelqu'un sait si ce code est mauvais ou si VS a un bug ou si Clang est permissif?
Je pense que mon constructeur ne devrait pas accepter de paramètres et passer la vérification enable_if - mais quelque part, VS dit "non".
Visual Studio 2015 Update 2 donne l'erreur suivante:
source_file.cpp(##): error C2512: 'Foo::Foo': aucun constructeur par défaut approprié disponible
Clang en direct: http://rextester.com/VWAI2954
VS en direct avec erreur: http://rextester.com/PTDSS2853
#include
#include
using namespace std;
template struct static_all_of;
// Si le premier paramètre est vrai, regardez le reste de la liste
template
struct static_all_of : static_all_of {};
// si l'un quelconque des paramètres est faux, retourne faux
template
struct static_all_of : std::false_type {};
// S'il ne reste plus de paramètres, aucun faux n'a été trouvée, donc retourne vrai
template <> struct static_all_of<> : std::true_type {};
struct Bar{};
struct Foo {
template >::value...>::value, int> = 0>
Foo(Things... stuff){}
};
int main()
{
Foo f;
}