Argümanın türüne bağlı olarak koşullu olarak derlemek istediğim bir şablonum var. Sadece "Düz Eski Veri" (POD), yani tamsayılar, vb. Veya sınıflar/yapılar arasında ayrım yapmayı önemsiyorum. Windows üzerinde C++ VS2008 kullanıyorum.Destek Türü özelliklerini kullanarak Koşullu Derleme
template<T>
class foo
{
void bar(T do_something){
#if IS_POD<T>
do something for simple types
#else
do something for classes/structs
#endif
}}
Destek kitaplığına bakıyorum ve istediklerime sahip olduklarını görebiliyorum. Ancak, #if
ifadesinin doğru sözdiziminin ne olacağını anlamıyorum.
Herhangi bir yardım için teşekkür ederiz.
Düzenleme --- yanıtları okuduktan sonra ben soru benim tanımında şey gözden bakın. Sınıf foo
, class type T
için doğru olan bar
sürümünün yalnızca örnek olması gereken şablonlu bir sınıftır. Derleme zamanı çözülebilecek bir çözüm arıyordum. Umarım bu sorunu çözer.
Bu, bir derleme hatası olacaktır ve bu noktada' çağrı iki tanımları göreceksiniz bar' çalıştığınızda ve derlemek başarısız olur onlardan biri. Bunun bir ikame hatası olmayacağı için SFINAE olmadığına dikkat edin. Bu, üyenin taklit edilmesinden önce sabittir (ya da bence, bu şeylerden asla emin değilim :)). –