تشخیص اشتباه بودن مقادیر ورودی template زمان کامپایل - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تشخیص اشتباه بودن مقادیر ورودی template زمان کامپایل

+1 امتیاز

چطوری میشه زمان کامپایل تشخیص داد که ورودی های یک فانکشن که بصورت template هستن  چی هستن ؟

. مثلا من می خوام توی تابع زیر اگر ورودی int نبود زمان کامپایل برنامم ارور بده .

template <typename T>
void calc(T a)
{
    // ??
}


int main()
{
      calc(23); //ok
      calc(2.2);//error
}

 

چه کار کنم ؟

سوال شده اسفند 24, 1392  بوسیله ی Gre (امتیاز 41)   4 5
دوباره تگ گذاری شد مرداد 28, 1393 بوسیله ی BlueBlade

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

توی C++11 می تونین از static_assert به همراه is_integral استفاده کنین به این شکل :

#include <type_traits>

template <typename T>
void calc(T a)
{
    static_assert(std::is_integral<T>::value, "error ... type is not integer");
}

int main()
{
      calc(23); //ok
      calc(2.2);//error
}

 

پاسخ داده شده اسفند 24, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 24, 1392 بوسیله ی مصطفی ساتکی
...