ho le seguenti due funzioni sovraccarichi di modello:const unificante T & e T && sovraccarica
template<typename T>
optional<T> some(const T& x)
{
return optional<T>(x);
}
template<typename T>
typename std::enable_if<std::is_rvalue_reference<T&&>::value, optional<T> >::type
some(T&& x)
{
return optional<T>(std::move(x));
}
Il mio primo tentativo di unificare i sovraccarichi tramite inoltro perfetta riuscita:
template<typename T>
optional<T> some(T&& x)
{
return optional<T>(std::forward<T>(x));
}
error: forming pointer to reference type 'const std::basic_string<char>&'
come ha fatto il mio secondo tentativo:
C'è un modo pulito per unificare i sovraccarichi, o devo solo vivere con averli?
È necessario fornire una definizione di cosa sia 'opzionale <>'. –
È fondamentalmente un clone giocattolo di 'boost :: optional'. – fredoverflow
... Eppure la domanda è valida, puoi fornire la definizione? Ho la sensazione che il problema sia con l'interfaccia di 'opzionale' (cioè l'inoltro perfetto è la soluzione per' some', potrebbe essere necessario modificarlo per adattarlo 'opzionale') –