Bir sınıf için bir kurucu oluşturmak istiyorum, herhangi bir integral türünü kullanarak, ancak imzalı ve imzasız arasında ayrım yapın. Bunun sınıfın kendisinde bir şablon olmasını istemiyorum. Aşağıdaki çalışmıyor. Visual Studio sadece argümanların eşleşmeyeceğini söylüyor.imzalı ve imzasız değişkenler için varyantik bir yapıcıyı kullanarak enable_if
class Thing{
public:
template<typename Integral>
Thing(
typename std::enable_if<
std::is_integral<Integral>::value &&
!std::is_same<Integral,bool>::value &&
std::is_signed<Integral>::value
,Integral
>::type num
){
//constructor using signed variable as input
}
template<typename Integral>
Thing(
typename std::enable_if<
std::is_integral<Integral>::value &&
!std::is_same<Integral,bool>::value &&
!std::is_signed<Integral>::value//notice this is different
,Integral
>::type num
){
//constructor using unsigned variable as input
}
};
Çalışmıyor mu? Ne yapıyor? :) – erip
'public' anahtar kelimesinin eksikliği, yukarıdaki kodu denerken alacağım ilk hata hakkında en azından bir şey söylüyor ... – skypjack