更具体地说,假设我想将boost :: range :: join的过程概括为接受任意数量的boost :: range作为参数(通过使用迭代器,省略号或某些容器,如std :: vector,它确实如此)在问题中无关紧要),除了返回+类型擦除之外,它还能以何种方式返回计算结果?
答案 0 :(得分:2)
C ++是一种静态类型语言。这意味着没有办法根据它的参数改变函数的返回类型' 值
但是,您可以实现一个函数模板,该模板使用基于静态类型和/或参数数量的不同返回类型。
答案 1 :(得分:0)
您可以创建基类。使函数的返回类型成为指向基类的指针。根据参数,您可以返回指向派生类实例的指针。