引用或指向不完整类型的std :: vector

时间:2015-12-09 21:38:22

标签: c++ templates c++11 vector

这里回答:How can an incomplete type be used as a template parameter to vector here?在实例化模板组件时使用不完整类型作为模板参数可能导致未定义的行为。但是当我们只有指向不完全类型的模板组件的指针/引用作为参数时,该规则是否成立?在这种情况下,实例也会发生吗?

例如:

<span class="tag" ng-repeat="data in dataset" id="4" ng-click="removeData_sk($index)"> {%verbatim%} {{data.name}} {%endverbatim%} </span>

换句话说,上面的代码是否有效?

1 个答案:

答案 0 :(得分:2)

声明是正确的,只要您不要拨打f2

如果您不打电话Result,编译器不需要知道f2课程的内部。声明中没有存储空间分配。

如果某个编译单元调用f2,您需要提供Result类的完整类型,或者需要另一个参考参数来调用f2

void another_f(SomeAlgoInterface& i, std::vector<Result>& results)
{
    i.f2(results);  
}