如何创建具有可变数量的类型参数的模板?

Nur*_*yev 8 c++ variadic-templates pack-expansion

在我们的代码库中,我们经常使用std::variant<std::shared_ptr<SomeClass>, ...>

显然,这需要大量的写作。如何制作模板?

template <class... T>
using VarSP = std::variant<std::shared_ptr<???>>;
Run Code Online (Sandbox Code Playgroud)

T以上代码片段应该放在哪里?所需的行为应为:

VarSP<Foo, Bar, Baz> // std::variant<std::shared_ptr<Foo>, std::shared_ptr<Bar>, std::shared_ptr<Baz>>
Run Code Online (Sandbox Code Playgroud)

use*_*670 15

template <typename... T>
using VarSP = std::variant<std::shared_ptr<T>...>;
Run Code Online (Sandbox Code Playgroud)