【问题标题】:Is there any way in C++ to allow different execution path for different data types?C++ 中有什么方法可以为不同的数据类型提供不同的执行路径吗?
【发布时间】:2023-03-19 05:56:01
【问题描述】:

我知道 C++ 模板允许具有不同数据类型的函数共享相似的实现代码,但我想知道如果函数具有完全不同的执行路径取决于数据类型怎么办。有没有办法做到这一点?

【问题讨论】:

  • 模板专业化。
  • 您可以专门化或部分专门化模板,使用 SFINAE,或使用重载,或它们的任意组合(尽管组合它们可能很棘手)。
  • @Dave:虚函数绝对是一种提供“取决于数据类型的不同执行路径”的机制。事实上,这就是他们的全部......
  • @Dave:实际上,我只是在做出真实且明显真实的陈述,而不是盲目地猜测 OP 的“意图”。 C++ 提供了许多类型的分派机制;有些是编译时的,有些是运行时的。我不明白为什么这应该是一个有争议的观点。

标签: c++ templates


【解决方案1】:

为此,您可以简单地使用重载,在这种情况下您不需要模板。

void path(int value)
{
  //
}

void path(string value)
{
  //
}

【讨论】:

  • 似乎重载是比模板更好的选择。
猜你喜欢
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多