C++ 比较C+中的类型名+;

C++ 比较C+中的类型名+;,c++,C++,我将其键入模板函数,只是想看看它是否有效: if (T==int) 智能感知没有抱怨。这是有效的C++吗?如果我做了: std::cout << (int)int; // looks stupid doesn't it. 代码> STD::CUT< P>不,这不是有效的C++。 IntelliSense不够聪明,无法发现代码中的所有错误;它必须完全编译代码才能编译,并且编译C++非常慢(使用智能工具太慢)。 不,如果(t==int)和STD::CUT,您可能甚至没有例示模板,这

我将其键入模板函数,只是想看看它是否有效:

if (T==int)
智能感知没有抱怨。这是有效的C++吗?如果我做了:

std::cout << (int)int;  // looks stupid doesn't it.

代码> STD::CUT< P>不,这不是有效的C++。
IntelliSense不够聪明,无法发现代码中的所有错误;它必须完全编译代码才能编译,并且编译C++非常慢(使用智能工具太慢)。

不,如果(t==int)和STD::CUT

,您可能甚至没有例示模板,这就是编译的原因。

< P>这就是您要做的吗?<
if(typeid(T) == typeid(int))
这个呢

cout << typeid(int).name();

cout为了满足您的需求,您应该使用
typeid
操作符。那么你的表情会是

if (typeid(T) == typeid(int)) {
    ...
}
这是一个很明显的例子,可以说明这一点:

#include <typeinfo>
#include <iostream>

template <typename T>
class AClass {
public:
    static bool compare() {
        return (typeid(T) == typeid(int));
    }
};

void main() {
    std::cout << AClass<char>::compare() << std::endl;
    std::cout << AClass<int>::compare() << std::endl;
}

智能感知!=编译器。。。它是否有效?如果是这样的话,对内部工作原理稍加解释就好了。@Travis G,你应该把它作为一个答案贴出来。。。它真的值得投票……)如果它没有编译,那么它是无效的。而这些代码将无法编译。至于Intellisense的内部工作原理,你必须向微软寻求一个完整的解释。但至于为什么它不能编译…好吧,它就是无效的,因为它真的没有任何意义。如果你比较类型名的原因是为了允许对某些数据类型进行特殊处理,你可以简单地使用模板专门化。
0
1