osrm-backend/include/util/exception.hpp

31 lines
752 B
C++
Raw Normal View History

#ifndef OSRM_EXCEPTION_HPP
#define OSRM_EXCEPTION_HPP
2015-01-27 11:44:46 -05:00
#include <exception>
#include <string>
#include <utility>
2015-01-27 11:44:46 -05:00
namespace osrm
{
2016-01-05 10:51:13 -05:00
namespace util
{
2015-01-27 11:44:46 -05:00
class exception final : public std::exception
{
public:
explicit exception(const char *message) : message(message) {}
explicit exception(std::string message) : message(std::move(message)) {}
const char *what() const noexcept override { return message.c_str(); }
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 std::string message;
};
}
2016-01-05 10:51:13 -05:00
}
#endif /* OSRM_EXCEPTION_HPP */