Сообщение Re[3]: Не могу явно инстанцировать шаблон функции-члена от 12.10.2018 12:16
Изменено 12.10.2018 12:33 Erop
Re[3]: Не могу явно инстанцировать шаблон функции-члена
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Есть ли более надежные способы борьбы с этим, кроме вот такого извращения?
ЕМ>
Это не защищает от промежуточного переполнения
Я про другое, вообще-то.
1) Тип результата всё равно указываешь при вызове, при этом из контекста знаешь, какая точность тут нужна. Зачем как-то параметризовать аргументы?
Типа имеешь два комплекта функций Short и Long и вперёд.
В Long сразу на входе просишь 64-битные данные, в Short в Debug-версии проверяешь переполнение (например сравниваешь с результатом Long-аналога)
2) Как происходит остальная параметризация я не понял. секунды и такты -- это разные типы или и то и то -- числа, а кто секунды, а кто такты определяется именем функции/аргумента?
3) Если это зачем-то надо, можно сделать параметром шаблона Long версию брать или Short. Можно сделать такой type_treats, например.
ЕМ>Есть ли более надежные способы борьбы с этим, кроме вот такого извращения?
ЕМ>
ЕМ> return static_cast <ResType> (static_cast <ResType> (0) + a * b / 1000000);
ЕМ>
Это не защищает от промежуточного переполнения
Я про другое, вообще-то.
1) Тип результата всё равно указываешь при вызове, при этом из контекста знаешь, какая точность тут нужна. Зачем как-то параметризовать аргументы?
Типа имеешь два комплекта функций Short и Long и вперёд.
В Long сразу на входе просишь 64-битные данные, в Short в Debug-версии проверяешь переполнение (например сравниваешь с результатом Long-аналога)
2) Как происходит остальная параметризация я не понял. секунды и такты -- это разные типы или и то и то -- числа, а кто секунды, а кто такты определяется именем функции/аргумента?
3) Если это зачем-то надо, можно сделать параметром шаблона Long версию брать или Short. Можно сделать такой type_treats, например.
Re[3]: Не могу явно инстанцировать шаблон функции-члена
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Есть ли более надежные способы борьбы с этим, кроме вот такого извращения?
ЕМ>
Это не защищает от промежуточного переполнения
Я про другое, вообще-то.
1) Тип результата всё равно указываешь при вызове, при этом из контекста знаешь, какая точность тут нужна. Зачем как-то параметризовать аргументы?
Типа имеешь два комплекта функций Short и Long и вперёд.
В Long сразу на входе просишь 64-битные данные, в Short в Debug-версии проверяешь переполнение (например сравниваешь с результатом Long-аналога)
2) Как происходит остальная параметризация я не понял. секунды и такты -- это разные типы или и то и то -- числа, а кто секунды, а кто такты определяется именем функции/аргумента?
3) Если это зачем-то надо, можно сделать параметром шаблона Long версию брать или Short.
ЕМ>Есть ли более надежные способы борьбы с этим, кроме вот такого извращения?
ЕМ>
ЕМ> return static_cast <ResType> (static_cast <ResType> (0) + a * b / 1000000);
ЕМ>
Это не защищает от промежуточного переполнения
Я про другое, вообще-то.
1) Тип результата всё равно указываешь при вызове, при этом из контекста знаешь, какая точность тут нужна. Зачем как-то параметризовать аргументы?
Типа имеешь два комплекта функций Short и Long и вперёд.
В Long сразу на входе просишь 64-битные данные, в Short в Debug-версии проверяешь переполнение (например сравниваешь с результатом Long-аналога)
2) Как происходит остальная параметризация я не понял. секунды и такты -- это разные типы или и то и то -- числа, а кто секунды, а кто такты определяется именем функции/аргумента?
3) Если это зачем-то надо, можно сделать параметром шаблона Long версию брать или Short.