问题 When you have class template argument deduction available from C++17, why can't you deduce the template arguments of std::unique_ptr? For example, this gives me an error: std::unique_ptr smp(new D); That says "Argument list of class template is missing". Shouldn't the template arguments (at least the pointer type) be deducable? See this: any declaration that specifies initialization of a variable and variable template 回答1: I'm not going to repeat the rationale in @NathanOliver's great answer,