ile herhangi bir kurucuyu algılar SFINAE ve variadic şablonlarını kullanarak herhangi bir kurucuyu algılayan bir şablon sınıfı oluşturmaya çalıştım. BununC++, SFINAE
struct MyBadType {
MyBadType(int x) { }
};
sonuç: Aşağıdaki türü ile bu test ettiğinizde
template <typename Type, typename ... Arguments>
struct IsConstructible
{
template <typename U, decltype(U(Arguments...))* = nullptr>
static char test();
template <typename U>
static long test(...);
static constexpr bool value = sizeof(test<Type>()) == sizeof(char);
};
Ancak:
IsConstructible<MyBadType, int>::value;
0. olan yanlış bir şey var mı Burada şablonun kodudur benim şablon denetleyici ile? MSVS 2015 ekspres kullanıyorum.
, "U (Arguments ...)' tarafından "U (std :: declval() ...)' yerine sonra "char" (int) 'ye bir 'int' parametresi ekleyerek başlayın (ardından sizeof (test (0)) ') –
@PiotrSkotnicki Yanıtlar yanıt kutusuna gider. – Barry