Skip to content

Instantly share code, notes, and snippets.

View ALSchwalm's full-sized avatar

Adam Schwalm ALSchwalm

View GitHub Profile
template<typename T>
class Foo {
public:
Foo() {
++c;
}
private:
thread_local static int c;
};
num test_enum
{
A,
B,
C
};
template<test_enum T>
int f(int x);
#include <cstdlib>
#include <iostream>
struct Mammal {
Mammal() { std::cout << "Mammal::Mammal\n"; }
virtual ~Mammal() { std::cout << "Mammal::~Mammal\n"; };
virtual void run() = 0;
virtual void walk() = 0;
virtual void move() { walk(); }
};
int main() {
Mammal *m;
if (rand() % 2) {
m = new Cat();
} else {
m = new Dog();
}
m->walk();
delete m;
Bat* bat = new Bat();
Bird* b = bat;
Mammal* m = bat;
#include <iostream>
#include <cstdlib>
struct Mammal {
Mammal() { std::cout << "Mammal::Mammal\n"; }
virtual ~Mammal() {}
virtual void walk() { std::cout << "Mammal::walk\n"; }
};
struct Cat : Mammal {
struct CloningLab {
subjects: Vec<Box<Mammal + Clone>>,
}
impl CloningLab {
fn clone_subjects(&self) -> Vec<Box<Mammal + Clone>> {
self.subjects.clone()
}
}
trait CloneMammal: Clone + Mammal{}
impl<T> CloneMammal for T where T: Clone + Mammal{}
let cat = Cat {
meow_factor: 7
purr_factor: 8
};
// No problem, a CloneMammal is impl for Cat
let clone_mammal: &CloneMammal = cat;
// Error!
let clone: &Clone = &clone_mammal;
let cat = Cat {
meow_factor: 7
purr_factor: 8
};
let dog = Dog { ... };
let clone_mammal: &CloneMammal;
if get_random_bool() == true {
clone_mammal = &cat;