Coverage/main.cpp (42 lines of code) (raw):

#include <string> #include <iostream> #include <utility> class Foo { std::string str; public: explicit Foo(std::string str) : str(std::move(str)) { std::cout << "Run Foo(std::string str)" << std::endl; } Foo(Foo &f) { std::cout << "Run Foo(Foo &f)" << std::endl; } Foo(Foo const &foo) { std::cout << "Run Foo(Foo const &foo)" << std::endl; } [[nodiscard]] const std::string &getStr() const { std::cout << "Run getStr()" << std::endl; return str; } void setStr(const std::string &basicString) { std::cout << "Run setStr(...)" << std::endl; Foo::str = basicString; } virtual ~Foo() { std::cout << "Run ~Foo()" << std::endl; }; }; void bar(Foo &f) { Foo &f1 = f; std::cout << "in bar(Foo &f)" << std::endl; } void baz(Foo f) { Foo f1 = f; std::cout << "in baz(Foo f)" << std::endl; } int main() { Foo f("Hello Coverage!"); const auto &p = f.getStr(); bar(f); baz(f); return 0; }