[問題] template<DT>要如何知道 輸入是哪種DT

作者: su27 (su27)   2020-02-14 16:43:28
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
vs2017
我寫了一個類別 如下
(問題一)
我想要做到
如何知道typeA 是int 或 double 甚至是 Point 之類的
PS:這段程式碼沒法執行
在這裡會報錯 if (typeA == int)
請問想要做到這樣的功能要怎麼實現
謝謝
template <class typeA>
class Ho_Data
{
private:
public:
int type ;
vector <typeA> Data;
Ho_Data()
{
if (typeA == int)
{
this->type = 0;
}
else if (typeA == double)
{
this->type = 1;
}
}
};
作者: fenzhang (分帳)   2020-02-14 17:14:00
std::is_same
作者: sarafciel (Cattuz)   2020-02-14 17:23:00
作者: harryooooooo (真_終極蘿莉控Ecstasy_)   2020-02-14 21:14:00
C++17以後的話可以把樓上的if改成if constexpr
作者: johnjohnlin (嗯?)   2020-02-14 22:11:00
C++11 之前的話用 template 特例化
作者: oToToT (屁孩)   2020-02-14 22:47:00
如果是double,int之類的話,可能也可以考慮看看is_floating_point
作者: KanzakiHAria (神崎・H・アリア)   2020-02-15 13:06:00
template特化就好+1 阿就base on type的語法還去用== 也太幽默了吧
作者: LPH66 (-6.2598534e+18f)   2020-02-15 13:56:00
不過 if constexpr 達成的效果跟直接特化是一樣的用 if constexpr 的好處應該只有在除去這判斷之外的部分只要寫一次吧; 如果沒有這種共同部份的話直接特化就足夠了

Links booklink

Contact Us: admin [ a t ] ucptt.com