I want to create some Timer class, which prints \"text\" every N seconds, where N will be initialized in constructor.
#include
Before calling shared_from_this() your class needs to be stored in a shared_ptr. This means that you cannot call shared_from_this() inside the constructor, because the line the object won't be placed into the shared_ptr until after the constructor is finished.
This is the reason that classes which use enable_shared_from_this typically have a start function which does the final steps of initialization that require the use of shared_from_this(). That start function needs to be called after the object is completely constructed, and so cannot be called from inside the constructor as you are doing.