[glibmm] ustring.h: Add Specialization for Stringify<const char[N]>
- From: Chun-wei Fan <fanchunwei src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] ustring.h: Add Specialization for Stringify<const char[N]>
- Date: Fri, 19 Sep 2014 07:37:28 +0000 (UTC)
commit 169cce1e7477041435db7dbb8d92685214ec8f79
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Fri Sep 19 13:53:50 2014 +0800
ustring.h: Add Specialization for Stringify<const char[N]>
This adds a specialization for string literals in the form of const char[N]
as some compilers would take such things to have ambiguous constructor
overloads, such as Visual Studio, which take string literals in this form.
* glib/glibmm/ustring.h: Add a specialization for Stringify for
const char[N] so that ambiguous constructor overloads can be
avoided for string literals in this form.
https://bugzilla.gnome.org/show_bug.cgi?id=736778
glib/glibmm/ustring.h | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/glib/glibmm/ustring.h b/glib/glibmm/ustring.h
index 6e09ecd..69b6733 100644
--- a/glib/glibmm/ustring.h
+++ b/glib/glibmm/ustring.h
@@ -1326,6 +1326,24 @@ public:
inline const ustring* ptr() const { return &string_; }
};
+/** A template specialization for Stringify<const char[N]> (for string literals),
+ * because the regular template has ambiguous constructor overloads for char*.
+ */
+template <std::size_t N>
+class ustring::Stringify<const char[N]>
+{
+private:
+ const ustring string_;
+
+ // noncopyable
+ Stringify(const ustring::Stringify<const char[N]>&);
+ Stringify<ustring>& operator=(const ustring::Stringify<const char[N]>&);
+
+public:
+ explicit inline Stringify(const char arg[N]) : string_(arg) {}
+ inline const ustring* ptr() const { return &string_; }
+};
+
template <class T1>
inline // static
ustring ustring::compose(const ustring& fmt)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]