Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++;为不同的数据类型允许不同的执行路径? P>我知道C++模板允许不同数据类型的函数共享类似的实现代码,但我想知道函数是否具有完全不同的执行路径取决于数据类型。还有其他方法吗?_C++_Templates - Fatal编程技术网

在C++;为不同的数据类型允许不同的执行路径? P>我知道C++模板允许不同数据类型的函数共享类似的实现代码,但我想知道函数是否具有完全不同的执行路径取决于数据类型。还有其他方法吗?

在C++;为不同的数据类型允许不同的执行路径? P>我知道C++模板允许不同数据类型的函数共享类似的实现代码,但我想知道函数是否具有完全不同的执行路径取决于数据类型。还有其他方法吗?,c++,templates,C++,Templates,为此,您可以简单地使用重载,在这种情况下不需要模板 void path(int value) { // } void path(string value) { // } 模板专门化。另请参阅:您可以专门化或部分专门化模板、使用SFINAE、使用重载或它们的任何组合(尽管组合它们可能很棘手)。@Dave:虚拟函数绝对是一种提供“不同执行路径(取决于数据类型)”的机制。事实上,这就是他们的全部…@戴夫:事实上,我所做的只是字面上和明显真实的陈述,而不是盲目猜测OP的“意图”。C++提供了

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

void path(int value)
{
  //
}

void path(string value)
{
  //
}

模板专门化。另请参阅:您可以专门化或部分专门化模板、使用SFINAE、使用重载或它们的任何组合(尽管组合它们可能很棘手)。@Dave:虚拟函数绝对是一种提供“不同执行路径(取决于数据类型)”的机制。事实上,这就是他们的全部…@戴夫:事实上,我所做的只是字面上和明显真实的陈述,而不是盲目猜测OP的“意图”。C++提供了多种类型的调度机制;有些是编译时的,有些是运行时的。我不明白为什么这应该是一个有争议的问题。似乎重载是一个比模板更好的选择。