Portál AbcLinuxu, 13. května 2025 00:28

Dotaz: C++ template funkcia s predvyplneným parametrom

9.10.2020 22:25 Naples
C++ template funkcia s predvyplneným parametrom
Přečteno: 262×
Odpovědět | Admin
Mám generickú funkciu (je súčasťou statickej triedy preto to slovko static na začiatku):
template<typename ResultType = std::string, typename InputCharType = char>
static ResultType ToString(const std::vector<InputCharType>& binaries)
{
	requires_binaries_ct(InputCharType);
	requires_base_string(ResultType);
	return ResultType(binaries.begin(), binaries.end());
}
A chcel by som si k nej urobiť skratku s predvypleným prvým parametrom ako std::wstring (namiesto std::string). Ako na to? Intuícia mi hovorí že možno slovom using by sa to dalo nejako predvyplniť? Ale ako konkrétne? Takto to nefunguje.
using ToWString = ToString<std::wstring>
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.10.2020 23:49 10minuteman
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co treba
template <typename T>
using ToWString = ToString<std::wstring>
tu je to popsano lepe.
10.10.2020 00:05 10minuteman
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
To jsem napsal ale blbost, melo by to byt takhle:
 
template <typename T>
using ToWstring = ToString<std::wstring, T>;
10.10.2020 14:24 Naples
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Včera v noci som to skúšal a nefungovalo mi to, asi tam chýba ešte nejaká drobnosť. Skúsim to odladiť metódou pokus omyl, idem si, ale prečítať aj ten odkaz. Dik.
11.10.2020 14:24 10minuteman
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Sorry sorry sorry, ted teprve vidim, ze resis funkci, ne typ.

Pokud vim, tak castecne specializovat funkce nejde.

Mozna bys mohl pouzit partial class specialization. Z te funkce bys udelal function object (takovou tu class, co ma pretizeny operator()) a specializoval ten.

https://www.fluentcpp.com/2017/08/11/how-to-do-partial-template-specialization-in-c/ resi veci, ktere by te mohly zajimat.
Gréta avatar 10.10.2020 16:37 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Odpovědět | | Sbalit | Link | Blokovat | Admin

nóó nebylo by víc lepšejší vzit nato jakoby std::variant hele a hele :O :O

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
11.10.2020 11:54 Naples
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Neviem idem si to prečítať, resp potom aj vyskúšať dik za tip.
11.10.2020 15:42 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: C++ template funkcia s predvyplneným parametrom
Odpovědět | | Sbalit | Link | Blokovat | Admin
Funkce částečně specializovat nejdou ale pro tvůj případ ti postačí tohle:
#include <iostream>

// Plně generická funkce
template <typename T, typename U>
void f(T &&arg1, U &&arg2) {
        std::wcout << arg1 << " " << arg2 << std::endl;
}

// Částečně specializovaný wrapper
template <typename T>
void f2(T &&arg1, const std::wstring &arg2) {
        f(arg1, arg2);
}

int main()
{
        f("abc", 123);
        f2("abc", L"XXX");
        f2("abc", 123);

        return 0;
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.