次のコードがコンパイラによって最適化およびインライン化された場合、三項演算を評価するために必要な分岐が削除されると想定しても安全ですか? または、ほとんどの主流のコンパイラでは、分岐を避けるために、以下のメソッドを 2 つの別々のメソッドに分割する方が賢明でしょうか?
/*! \brief this method returns the cos of an angle. User can specify if it is
* in degrees or radians.
*/
template <typename T, angle_mode AM>
T cos(const T &angle)
{
return (AM == radians) ?
std::cos(angle) :
std::cos(degrees_to_radians(angle));
}