Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fortran1986 17. 08. 2021, 16:35:42
-
Ahojte, občas by som si chcel sprehladniť kód a zabrániť zbytočnému prepisovaniu rovnakého kódu a tak v C++ pomerne veľa používam typové aliasy. Problém je, že v hlavičke šablóny typový alias definovať nemôžem, alebo hej? Uvediem príklad kedy by sa mi hodil typový alias:
template <
typename BeginRecordType,
typename RecordType = BeginRecordType,
typename ...Args
>
using _Table = Table<BeginRecordType, RecordType, Args...>; // už tu by sa mi hodilo definovať typový alias
class Table : public ranges::view_facade<_Table>
{
public:
using QueryList = std::tuple<Args...>;
// kod triedy...
}
To isté platí aj pre hlavičku template funkcie (alebo metódy), kde by sa mi zase hodil alias na skrátenie názvov typov v pri argumentoch funkcie. Ako tento problém riešiť? Existuje nejaké čisté riešenie (na úrovni jazyka?) alebo to mám nejako ohackovať preprocessorom?
-
Ahojte, občas by som si chcel sprehladniť kód a zabrániť zbytočnému prepisovaniu rovnakého kódu a tak v C++ pomerne veľa používam typové aliasy. Problém je, že v hlavičke šablóny typový alias definovať nemôžem, alebo hej? Uvediem príklad kedy by sa mi hodil typový alias:
template <
typename BeginRecordType,
typename RecordType = BeginRecordType,
typename ...Args
>
using _Table = Table<BeginRecordType, RecordType, Args...>; // už tu by sa mi hodilo definovať typový alias
class Table : public ranges::view_facade<_Table>
{
public:
using QueryList = std::tuple<Args...>;
// kod triedy...
}
To isté platí aj pre hlavičku template funkcie (alebo metódy), kde by sa mi zase hodil alias na skrátenie názvov typov v pri argumentoch funkcie. Ako tento problém riešiť? Existuje nejaké čisté riešenie (na úrovni jazyka?) alebo to mám nejako ohackovať preprocessorom?
V tomhle případě se opakování asi nevyhneš. Já osobně pro něco takového lepší řešení nevymyslel. Hákování preprocesorem je IMO horší, než to v tomhle případě prostě zopakovat. Stačí 2x - jednou do báze a podruhé jako using v těle třídy.
-
Ahojte, občas by som si chcel sprehladniť kód a zabrániť zbytočnému prepisovaniu rovnakého kódu a tak v C++ pomerne veľa používam typové aliasy. Problém je, že v hlavičke šablóny typový alias definovať nemôžem, alebo hej? Uvediem príklad kedy by sa mi hodil typový alias:
template <
typename BeginRecordType,
typename RecordType = BeginRecordType,
typename ...Args
>
using _Table = Table<BeginRecordType, RecordType, Args...>; // už tu by sa mi hodilo definovať typový alias
class Table : public ranges::view_facade<_Table>
{
public:
using QueryList = std::tuple<Args...>;
// kod triedy...
}
To isté platí aj pre hlavičku template funkcie (alebo metódy), kde by sa mi zase hodil alias na skrátenie názvov typov v pri argumentoch funkcie. Ako tento problém riešiť? Existuje nejaké čisté riešenie (na úrovni jazyka?) alebo to mám nejako ohackovať preprocessorom?
V tomhle případě se opakování asi nevyhneš. Já osobně pro něco takového lepší řešení nevymyslel. Hákování preprocesorem je IMO horší, než to v tomhle případě prostě zopakovat. Stačí 2x - jednou do báze a podruhé jako using v těle třídy.
Ďakujem Vám za odpoveď. Zatiaľ to aj kopírujem.