decltype

lockguard

smart ptr

std::move

shared_from_this