class Logging {bool connectToLogServer();bool isConnected();void logging(std::string& msg) { if (!isConnected()) return; std::cout << msg; }void logging(std::string& msg) && { connectToLogServer(); std::cout << msg; }}
{ Logging log; log.connectToLogServer(); log.logging("sfsfds"); log.logging("sfsfds2");}
Logging().logging("sfsfds");
void logging(std::string& msg) { if (!isConnected()) connectToLogServer(); if (!isConnected()) return; std::cout << msg; }
struct base{ template<class t> virtual void foo(const t&) = 0;};struct der: base{ template<class t> virtual void foo(const t&) {} };struct some {};int main(){ der d; base& b = d; some v; b.foo(v); // --- приводит к инстанцированию // virtual void base::foo(const some&) = 0; // virtual void der::foo(const some&){} // и так для всех наследников}