【发布时间】:2023-03-19 05:56:01
【问题描述】:
我知道 C++ 模板允许具有不同数据类型的函数共享相似的实现代码,但我想知道如果函数具有完全不同的执行路径取决于数据类型怎么办。有没有办法做到这一点?
【问题讨论】:
-
模板专业化。
-
您可以专门化或部分专门化模板,使用 SFINAE,或使用重载,或它们的任意组合(尽管组合它们可能很棘手)。
-
@Dave:虚函数绝对是一种提供“取决于数据类型的不同执行路径”的机制。事实上,这就是他们的全部......
-
@Dave:实际上,我只是在做出真实且明显真实的陈述,而不是盲目地猜测 OP 的“意图”。 C++ 提供了许多类型的分派机制;有些是编译时的,有些是运行时的。我不明白为什么这应该是一个有争议的观点。