Fix libcxx build.
In libcxx, vector<bool>::const_reference is not the same as bool. This requires
a new specialization of ParamTraits.
BUG=178409
R=tsepez@chromium.org,agl@chromium.org
Review URL: https://chromiumcodereview.appspot.com/12943006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189383 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: d4124854e6263eeb59bd84160f7e710c537d5b8b
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index f3e40fa..a8ad2b0 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -404,8 +404,11 @@
void ParamTraits<std::vector<bool> >::Write(Message* m, const param_type& p) {
WriteParam(m, static_cast<int>(p.size()));
+ // Cast to bool below is required because libc++'s
+ // vector<bool>::const_reference is different from bool, and we want to avoid
+ // writing an extra specialization of ParamTraits for it.
for (size_t i = 0; i < p.size(); i++)
- WriteParam(m, p[i]);
+ WriteParam(m, static_cast<bool>(p[i]));
}
bool ParamTraits<std::vector<bool> >::Read(const Message* m,
@@ -429,7 +432,7 @@
for (size_t i = 0; i < p.size(); ++i) {
if (i != 0)
l->push_back(' ');
- LogParam((p[i]), l);
+ LogParam(static_cast<bool>(p[i]), l);
}
}