Дано Node
в Tree
контейнере:
#include <iostream>
template <class T>
class Tree {
struct Node {
Node(T val) : left(new Node()), right(new Node()), val(val) { /* value node */ }
Node() : left(nullptr), right(nullptr) { /* sentinal node */ }
Node *left, *right;
T val;
};
public:
T insert(T val) {
Node node(val);
return node.val;
}
};
int main() {
Tree<int> tree;
std::cout << tree.insert(42);
}
Когда я создаю сторожевой узел, используя new Node()
, он инициализирует член val
, используя конструктор по умолчанию T()
.Однако T
может не иметь конструктора по умолчанию.
Как создать сторожевой узел без вызова конструктора по умолчанию T
?