Załóżmy, że mamy klasy szablonu takiego:Odliczenie funkcji
template<typename F>
class A
{
public:
template<typename... Args>
A(F f, Args... args)
{ /* Do something... */ }
};
a teraz chcę go używać w jakiś sposób podobny do tego:
A<int(int)> a(::close, 1);
teraz pytanie: czy istnieje sposób, aby pominąć <int(int)>
, ponieważ kompilator może znać tę informację dla ::close
? Nie ma potrzeby zapisywania "projektu" szablonu.
Co do konkretnego zadania, muszę zaprojektować szablon klasy. Obiekty tej klasy mogą przyjąć funkcję i parametry dla tej funkcji w czasie budowy i wywołać tę funkcję później.
Wierzę, że właściwym sposobem wykonania tych funkcji fabrycznych jest użycie 'std :: decay' lub podobnej cechy na' A '. Które sprawiają, że 'A >'. Zobacz http://en.cppreference.com/w/cpp/utility/optional/make_optional lub inne 'make_ *' reference –
KABoissonneault
@KABoissonneault Tak, masz rację, jeśli używam uniwersalnych referencji, powinienem używać 'std :: decay' , Zaktualizowałem odpowiedź. – Holt
Nie bardzo rozumiałem pytanie, a zatem odpowiedź. Czy cały cel jest w stanie powiedzieć "auto a (:: close, 1)"? – Assimilater