函数参数没有类型

时间:2016-07-21 23:54:05

标签: c++ function arguments openvdb

我在OpenVDB文档中遇到了以下代码:

template<typename _RootNodeType>
class Tree: public TreeBase
{
...
    template<typename OtherTreeType>
    Tree(const OtherTreeType& other,
        const ValueType& inactiveValue,
        const ValueType& activeValue,
        TopologyCopy): // <-- this looks weird
        TreeBase(other),
        mRoot(other.root(), inactiveValue, activeValue, TopologyCopy())
    {
}

如果没有指定类型,我之前看到过defaults to an int参数,但这可能就是这种情况吗? TopologyCopy被称为运营商2行以下。

上述声明是什么意思?

编辑: 接受的答案解释了正在发生的事情。解决方案是将函数调用为

openvdb::Tree newTree(oldTree, inactiveValue, activeValue, TopologyCopy());

2 个答案:

答案 0 :(得分:2)

这不是没有类型的论据。这是一个没有名字的争论。它的类型是TopologyCopyTopologyCopy()默认构造该类型的对象并将其传递给mRoot的构造函数。如果我不得不猜测,我会说他们可能在这里使用标签调度来选择具有相同参数的不同构造函数。

答案 1 :(得分:0)

TopologyCopy是一个类型,并且由于未使用参数/变量,因此它不存在。

关注TopologyCopy()构建TopologyCopy