#include <iostream>
#include <type_traits>
template <typename T>
class Test {
public:
void test()
{
if constexpr(std::is_integral<T>::value)
int i = 42;
else
double i = 42;
std::cout << i << std::endl;
}
};
int main(int argc, char* argv[])
{
Test<int> t1;
Test<double> t2;
return 0;
}
template <typename U> friend class UniquePtr;
, то можно использовать правильный вариант, обращаясь к приватным данным другого класса(он другой, т.к. у них разные шаблонные параметры). class BinaryTree {
public:
struct Node {
int value;
Node* left = nullptr;
Node* right = nullptr;
};
Node* root = nullptr;
void removeNode(Node* node)
{
std::queue<Node*> removeQueue;
while (node) {
if (node->left)
removeQueue.push(node->left);
if (node->right)
removeQueue.push(node->right);
delete node;
node = nullptr;
if (!removeQueue.empty()) {
node = removeQueue.front();
removeQueue.pop();
}
}
}
void removeValue(int value)
{
Node* node = findNodeByValue(value);
if (node)
removeNode(node);
}
Node* findNodeByValue(int value)
{
Node* currentNode = root;
while (currentNode) {
if (currentNode->value == value)
break;
else if (value > currentNode->value)
currentNode = currentNode->right;
else if (value < currentNode->value)
currentNode = currentNode->left;
}
return currentNode;
}
};
Покажет, стабильно ли работает компьютер, если не упал, не завис и температура держится в пределах нормы, то всё ок, в идеале его нужно делать из другой ОС, чтобы исключить программные ошибки, такие как проблемы с драйверами и вирусы.
И проверь блок питания, если новый, то просто посчитай мощность, потребляемую всеми компонентами и сравни с выдаваемой БП, должен быть небольшой запас, если БП старый, то неплохо бы проверить конденсаторы на предмет вздутости.