C++: Default template argument only deduced when using "<>" -
i created struct
easy templated math definitions:
template<class t = float> struct math{ static constexpr t pi = t(3.14159265359); static constexpr t e = t(2.718281828459); static constexpr t inf = std::numeric_limits<t>::infinity(); };
i use this:
float pi = math::pi;
even if default argument t
float
ill error:
'template<class t> struct math' used without template parameters
if use math<>::pi
works. compiler bug or <>
brackets mandatory?
yes <>
brackets mandatory (see here).
but here other options:
use typedef
typedef math<> mydefaultmath // or typedef math<float> myfloatmath
or drop template
struct math { static constexpr float pi = 3.14159265359f; // ...
Comments
Post a Comment