diff --git a/CPP/CRTP/example/Makefile b/CPP/CRTP/example/Makefile new file mode 100644 index 0000000..38e5ad5 --- /dev/null +++ b/CPP/CRTP/example/Makefile @@ -0,0 +1,24 @@ +cpp_src = $(wildcard *.cpp) +cpp_src += $(wildcard ./utils/*.cpp) +cpp_src += $(wildcard ./driver/*.cpp) + +cpp_obj = $(cpp_src:.cpp=.o) +c_obj = $(c_src:.c=.o) +CC = g++ +CFLAGS = -Wall -pedantic -li2c +LDFLAGS = +EXEC = runtest + + +all : $(EXEC) + +$(EXEC): $(cpp_obj) $(c_obj) + $(CC) -o $@ $^ $(LDFLAGS) + +clean: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) + clear + +cleanall: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) + clear diff --git a/CPP/CRTP/example/main.cpp b/CPP/CRTP/example/main.cpp new file mode 100644 index 0000000..3039948 --- /dev/null +++ b/CPP/CRTP/example/main.cpp @@ -0,0 +1,14 @@ +#include + + +struct Shape +{ + +}; + + +int main(void) +{ + std::cout << "CRTP example" < + +struct Pin +{ + virtual void set(bool logic); + + virtual void toggle(); + + virtual bool get(void); +}; + +// https://www.modernescpp.com/index.php/c-is-still-lazy + +// curiously recurring template pattern +template +struct PinCRTP : public Pin +{ + virtual override set(bool logic) + { + static_cast<> + } +}; + + +int main(void) +{ + return 0; +} \ No newline at end of file