osrm-backend/include/util/osrm_exception.hpp

26 lines
731 B
C++
Raw Normal View History

2015-01-27 11:44:46 -05:00
#ifndef OSRM_EXCEPTION_HPP
#define OSRM_EXCEPTION_HPP
#include <exception>
#include <string>
#include <utility>
2015-01-27 11:44:46 -05:00
namespace osrm
{
class exception final : public std::exception
{
public:
explicit exception(const char *message) : message(message) {}
explicit exception(std::string message) : message(std::move(message)) {}
2015-01-27 11:44:46 -05:00
private:
// This function exists to 'anchor' the class, and stop the compiler from
// copying vtable and RTTI info into every object file that includes
// this header. (Caught by -Wweak-vtables under Clang.)
virtual void anchor() const;
const char *what() const noexcept override { return message.c_str(); }
2015-01-27 11:44:46 -05:00
const std::string message;
};
}
#endif /* OSRM_EXCEPTION_HPP */