c++ - What is an empty template argument <> while creating an object? -


here valid syntax:

std::uniform_real_distribution<> randomizer(0, 100); 

how work, automatically deduce object template? why necessary write <> @ end of type? can not remove <> , same?

typically can used , works when first , succeeding, or only, parameter has default template argument (type or value if integral). additional case when there template argument pack , empty.

the <> still needed identify template type.

in case type declared as;

template <class realtype = double> class uniform_real_distribution; 

hence default realtype template class uniform_real_distribution double. amounts std::uniform_real_distribution<double>.


with reference c++ wd n4527, §14.3/4 (template arguments)

when template argument packs or default template-arguments used, template-argument list can empty. in case empty <> brackets shall still used template-argument-list. [ example:

template<class t = char> class string; string<>* p; // ok: string<char> string* q;   // syntax error  template<class ... elements> class tuple; tuple<>* t; // ok: elements empty tuple* u;   // syntax error 

- end example ]


Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

jquery - javascript onscroll fade same class but with different div -