Skip to content
Snippets Groups Projects
Commit 6e5242f0 authored by Nat Goodspeed's avatar Nat Goodspeed
Browse files

DRTVWR-476: Fix LLError::Log::classname(T*) template function.

First, the signature classname(const T*) was wrong: that function could only
accept a pointer to const T. The expression classname(someptr) where someptr
was a pointer to non-const SomeType displayed "SomeType*" because it could
only match classname(const T&), where T was SomeType*.

classname(T* const) is what we should have written, meaning "const pointer to
T" rather than "pointer to const T."

Second, the previous implementation failed to handle the case in which the
pointer was nullptr.
parent 066fb5da
No related branches found
No related tags found
No related merge requests found
......@@ -207,7 +207,7 @@ namespace LLError
static std::string classname() { return demangle(typeid(T).name()); }
/// classname(some_pointer)
template <typename T>
static std::string classname(const T* ptr) { return demangle(typeid(*ptr).name()); }
static std::string classname(T* const ptr) { return ptr? demangle(typeid(*ptr).name()) : "nullptr"; }
/// classname(some_reference)
template <typename T>
static std::string classname(const T& obj) { return demangle(typeid(obj).name()); }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment