Cas*_*yas 2 c++ templates variadic-templates c++14
我正在编写一个需要可变数量的模板类型的类。我需要为每种类型调用订阅者,但请注意,没有实际参数传递给该类。就像是:
template<typename... T>
class Subscriber
{
Subscriber()
{
// for(typename X: T) <-- How to do this?
// {
// PubSub.Subscribe<X>( [](auto data){ // do something with data} );
// }
}
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中,在 C++17 中,您可能会执行以下操作:
template<typename... Ts>
class Subscriber
{
Subscriber()
{
auto f = [](auto data){ /* do something with data*/ };
(PubSub.Subscribe<Ts>(f), ...);
}
}
Run Code Online (Sandbox Code Playgroud)
在 C++11/14 中,您可能会使用更详细的方式,例如:
(C++14 目前使用通用 lambda)
template<typename... Ts>
class Subscriber
{
Subscriber()
{
auto f = [](auto data){ /* do something with data*/ };
int dummy[] = {0, (PubSub.Subscribe<Ts>(f), void(), 0)...};
static_cast<void>(dummy); // Avoid warning for unused variable.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |