? operator+(int, float)
От: johny5 Новая Зеландия
Дата: 03.02.13 06:19
Оценка:
Всем привет.

Что то вспотыкнулся, не нашёл в бусте (версия 1.39), автоматический вывод типов (промоушн до общего объемлющего арифметического типа) при перегрузке арифметических операторов типа operator+.

Хочется что то типа такого:

template<typename A, B>
typename enveloping_type<A, B>::type  operator+(A a, B b)...


Для примера <int, float> пусть выводить double, но было бы клёво если это можно было бы настраивать и выводить тут float.

Спасибо.
Re: ? operator+(int, float)
От: Ops Россия  
Дата: 03.02.13 06:43
Оценка: +2
Здравствуйте, johny5, Вы писали:

А чем decltype не устраивает?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: ? operator+(int, float)
От: zaufi Земля  
Дата: 03.02.13 11:49
Оценка: :)
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, johny5, Вы писали:


Ops>А чем decltype не устраивает?


судя по тому что ТС использует boost 1.39, боюсь предположить каких годов у него компилятор
Re[3]: ? operator+(int, float)
От: johny5 Новая Зеландия
Дата: 03.02.13 13:49
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>Здравствуйте, Ops, Вы писали:


Ops>>Здравствуйте, johny5, Вы писали:


Ops>>А чем decltype не устраивает?


Z>судя по тому что ТС использует boost 1.39, боюсь предположить каких годов у него компилятор


Да, а то я аж вздрогнул
Недавно только переполз на 2008ю, с 2005й. Хоть разница и не большая но в 2005й наткнулся на баг кодогенерации что меня в общем и подтолкнуло. Точно таким же образом переползал с 2003й
Re[4]: ? operator+(int, float)
От: Ops Россия  
Дата: 03.02.13 14:41
Оценка:
Здравствуйте, johny5, Вы писали:

J>Да, а то я аж вздрогнул

J>Недавно только переполз на 2008ю, с 2005й. Хоть разница и не большая но в 2005й наткнулся на баг кодогенерации что меня в общем и подтолкнуло. Точно таким же образом переползал с 2003й

А отсутствие поддержки стандарта не подталкивает перейти на более свежую?
А так есть библиотека Boost.Typeof, вроде даже в твоей древней версии буста.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: ? operator+(int, float)
От: Patalog Россия  
Дата: 03.02.13 21:10
Оценка: 2 (1)
Здравствуйте, johny5, Вы писали:

boost.common_type?
Почетный кавалер ордена Совка.
Re: ? operator+(int, float)
От: Alexander G Украина  
Дата: 04.02.13 09:27
Оценка:
Здравствуйте, johny5, Вы писали:

J>Хочется что то типа такого:


J>
J>template<typename A, B>
J>typename enveloping_type<A, B>::type  operator+(A a, B b)...
J>


J>Для примера <int, float> пусть выводить double, но было бы клёво если это можно было бы настраивать и выводить тут float.


По стандарту операторы для встроенных типов переопределять нельзя.
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.