[问题] 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