Re[9]: Не могу явно инстанцировать шаблон функции-члена
От: Erop Россия  
Дата: 12.10.18 12:33
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вот меня и вымораживает то, что вместо адекватных языковых средств управления приоритетами и доступностью шаблонных функций, идеологами C++ предлагаются извращения через метапрограммирование. По сути, это костыли, и выглядят уродливо, хотя и работают как-то. Очень трудно заставить себя это использовать. Спасибо за идею — буду пробовать, если не запинаю более традиционными способами.



Да ты просто не хочешь пользоваться тем, что предлагают в С++


Вот смотри, эта твоя MulAddDiv

Пишешь ШАБЛОН
template<typename T> T MulAddDiv( T a, T b, T c, T d)
{
    return (a * b + c) / d;
}



И пишешь ДРУГОЙ шаблон
template<typename TRes> TRes MulAddDiv( int a, int b, int c, int d)
{
    return static_cast<TRes>( тут вычисляем  с использованием особенностей x86 )
}


Ну и потом тип результата определяется всё равно тем, что должно получиться, так что всё равно при вызове надо звать MulAddDiv<int> или MulAddDiv<long long> или ещё как там вам надо


Ну и так для всех исключений из общего варианта.

Если надо подавить автоматический вывод T в первом варианте, можно сделать промежуточный шаблон Ideal<T>::Type, например

Но ты же не хочешь так делать? Хотя я не понимаю почему.

p. s.
Ну и перед тем, как что-то делать, я бы ещё глянул а не делает ли всё см оптимизатор. Может достаточно просто верно типы параметров и результата задавть?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.