您好,我在Cppreference.com上看到了许多这样的示例:
std::is_class<T>
std::is_integral
Run Code Online (Sandbox Code Playgroud)
等等。我知道我是否例如运行代码get true或false。但是,这有什么意义呢?例如知道对象是否为类类型?
#include <iostream>
#include <type_traits>
struct A {};
class B {};
enum class C {};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_class<A>::value << '\n';
std::cout << std::is_class<B>::value << '\n';
std::cout << std::is_class<C>::value << '\n';
std::cout << std::is_class<int>::value << '\n';
}
Run Code Online (Sandbox Code Playgroud)
输出:
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
我已经使用这个找遍了一个真实的例子(is_class,is_integral,is_arithmetic,...),但所有的教程只显示无望例如:只true或false。
有人能帮我举一个使用此模板的有用示例吗?
我发现许多文章解释了“默认初始化和值初始化”之间的区别,但实际上我并不清楚。
这是一个例子:
class A{
public:
int x;
};
int main(){
A a;// default initialization so x has undefined value.
A b = A(); // value initialization so x is a scalar thus it is value initialized to 0
}
Run Code Online (Sandbox Code Playgroud)
我猜上面在上面可以,但是在这里:
int value = 4; // is this considered a value-initialization?
Run Code Online (Sandbox Code Playgroud)
请帮助我了解两种初始化形式之间的主要区别。
c++ initialization value-initialization default-initialization