Является ли следующий код правильным с C ++ стандартной точки зрения ?
Или какой-либо из случаев, выводящих 0
в моем примере, завершился неудачей при определенных обстоятельствах?
struct Foo {
Foo() : k(), t{} {}
uint64_t i; //Uninitalized
uint64_t k;
uint64_t t;
};
int main(int argc, char ** argv) {
uint64_t i;
std::cout << i << std::endl; //Outputs garbage
uint64_t k = uint64_t();
std::cout << k << std::endl; //Outputs 0
uint64_t t = {};
std::cout << t << std::endl; //Outputs 0
//
Foo foo;
std::cout << foo.i << std::endl; //Outputs garbage
std::cout << foo.k << std::endl; //Outputs 0
std::cout << foo.t << std::endl; //Outputs 0
}