27class CGException :
public std::exception {
33 inline explicit CGException(std::string message) noexcept :
34 _message(std::move(message)) {
37 inline CGException(
const CGException& e) =
default;
39 inline CGException(CGException&& e) =
default;
41 template<
typename... Ts>
42 explicit CGException(
const Ts&... ts)
noexcept {
44 createMessage(s, ts...);
48 CGException()
noexcept =
delete;
50 const char* what()
const noexcept override {
51 return _message.c_str();
54 ~CGException()
noexcept override =
default;
58 template <
typename T,
typename... Ts>
59 inline void createMessage(std::ostringstream& s,
const T& t,
const Ts&... ts)
noexcept {
61 createMessage(s, ts...);
65 inline void createMessage(std::ostringstream& s,
const T& t)
noexcept {