@recker

Зачем нужны шаблоны, если есть макросы?

Зачем нужны шаблоны, если есть макросы?
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 2
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Покажи, как на макросах реализовать, например, такое https://github.com/DevAlone/RealEngine/blob/master... это мой велосипедный смарт поинтер. Я, например, слабо представляю реализацию такого на макросах. Если же рассматривать функции, то макросы использовать в C++ нельзя, это плохой подход, который может привести к ошибкам, например в таком случае:
#include <iostream>
#define square(x) x*x

int main() {
int var = square(5 + 5);
std::cout << var << std::endl;
}

и нужно писать тыщи скобок, чтобы их избежать. Решение в стиле C++ и красивее и не приводит к ошибкам:
#include <iostream>
template <typename T>
inline T square(T val) 
{ 
	return val * val; 
}

int main() {
int var = square(5 + 5);
std::cout << var << std::endl;
}

P.S. моё решение не учитывает ситуацию, когда аргумент шаблона - не встроенный тип
Ответ написан
Комментировать
@nirvimel
1. Статическая типизация (если для вас это не сильный аргумент, то вам, наверное, больше подойдет что-то вроде Python).
2. Более адекватные сообщения об ошибках компиляции при круто накрученной логике на макросах/шаблонах.
3. https://msdn.microsoft.com/en-us/library/z3f89ch8(...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы