In a C++11 program, I define these templates:
template <class T>
class c_out {
public:
bool success = false;
std::string error = "";
T result;
};
template <class T>
c_out<T> failed(T res, const std::string& error_msg = "") {
c_out<T> outcome;
outcome.success = false;
outcome.error = error_msg;
return outcome;
};
template <class T>
c_out<T> succeeded(T res) {
c_out<T> outcome;
outcome.success = true;
outcome.result = res;
return outcome;
};
I want to specialize them when class T is void. It works out easily for c_out:
template <>
class c_out<void> {
public:
bool success = false;
std::string error = "";
};
However, I keep getting errors for the other two functions. How can I specialize them?
c_out<void> failed(const std::string& error_msg = "") {
c_out<void> outcome;
outcome.success = false;
outcome.error = error_msg;
return outcome;
};
c_out<void> succeeded(void) {
c_out<void> outcome;
outcome.success = true;
return outcome;
};
Aucun commentaire:
Enregistrer un commentaire