Czy istnieje sposób na podwojenie precyzji zwracanej przez pomnożenie (aby uniknąć przepełnienia)?Zmodyfikuj szablon szablonu C++ na "długi T"?
template<class T> class MyClass {
T multiply (T a, T b) { return a * b; }
}
Coś jak:
long T multiply (T a, T b) { return a * b; }
Więc czy 'int', 'długi' lub 'double' została podana, a 'long int', 'long long' lub „long double "zostanie zwrócony z mnożenia.
To jest ogólne pytanie. Pracuję nad nim, używając podwójnie wewnętrznego. Ale moje pytanie brzmi, czy istnieje jakiś mechanizm promujący typ do jego "długiego" wariantu w C++?
To chyba lepiej po prostu użyć 'długie long' jako swojej' T' jeśli chcesz uniknąć przepełnienia. – Pubby
'long' nie jest kwalifikatorem, który można zastosować do nazwy typu; 'long int' jest niepodzielną nazwą typu, która jest pisana z dwoma słowami kluczowymi' long' i 'int'. –
Nie rozumiem, dlaczego chcesz używać "długiej litery T". T jest parametrem szablonu i może być dowolnym typem pierwotnym lub instancją obiektu, który chcesz być, jak długo * operator jest nadpisuje. W niektórych przypadkach możesz rzucić T na długo. – user1929959