Аргумент функции не имеет типа

Я наткнулся на следующий код в 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())
{
}

Я видел ранее, что аргумент по умолчанию int если тип не указан, но может ли это быть здесь? TopologyCopy вызывается как оператор на 2 строки ниже.

Что делает / означает вышеуказанная декларация?

Редактировать:
Принятый ответ объясняет, что происходит. Решение состоит в том, чтобы вызвать функцию как

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

0

Решение

Это не аргумент без типа. Это аргумент без имени. Его тип TopologyCopy, А также TopologyCopy() по умолчанию конструирует объект этого типа и передает его конструктору mRoot, Если бы мне пришлось угадывать, я бы сказал, что они, вероятно, используют здесь диспетчеризацию тегов для выбора между разными конструкторами с другими одинаковыми аргументами.

2

Другие решения

TopologyCopy является типом, и поскольку аргумент / переменная не используется, его нет.

Следующий TopologyCopy() строит TopologyCopy,

0

По вопросам рекламы [email protected]