Fab*_*ian 6 c++ stdstring visual-studio-2010 compiler-warnings
#include <string>
using namespace std;
int main()
{
string s; // no warning
int i; // warning C4101
return 0;
}
Run Code Online (Sandbox Code Playgroud)
i
但s
示例中没有?我的警告级别设置为4.
我假设编译器只警告普通可构造/可破坏类型的未使用变量。
template<typename>
struct Empty
{
};
template<typename T>
struct Trivial : Empty<T>
{
int* p;
int i;
};
template<typename>
struct NonTrivial
{
NonTrivial() {}
};
template<typename>
struct TrivialE
{
TrivialE& operator=(const TrivialE&) {}
};
struct NonTrivial2
{
NonTrivial2() {}
};
struct NonTrivialD
{
~NonTrivialD() {}
};
int main()
{
Empty<int> e; // warning
Trivial<int> t; // warning
NonTrivial<int> n; // OK
TrivialE<int> te; // warning
NonTrivial2 n2; // OK
NonTrivialD nd; // OK
}
Run Code Online (Sandbox Code Playgroud)
可以看出,它们是一致的。
由于std::string
不可能被轻易破坏,因此编译器不会对此发出警告。
所以回答你的问题:你不能。