diff --git a/dbus/bus.h b/dbus/bus.h
index 59a1972..b287053 100644
--- a/dbus/bus.h
+++ b/dbus/bus.h
@@ -702,8 +702,7 @@
   // match rules are counted in a map.
   std::map<std::string, int> match_rules_added_;
   std::set<ObjectPath> registered_object_paths_;
-  std::set<std::pair<DBusHandleMessageFunction, void*> >
-      filter_functions_added_;
+  std::set<std::pair<DBusHandleMessageFunction, void*>> filter_functions_added_;
 
   // ObjectProxyTable is used to hold the object proxies created by the
   // bus object. Key is a pair; the first part is a concatenated string of
@@ -711,21 +710,21 @@
   // "org.chromium.TestService/org/chromium/TestObject".
   // The second part is the ObjectProxy::Options for the proxy.
   typedef std::map<std::pair<std::string, int>,
-                   scoped_refptr<dbus::ObjectProxy> > ObjectProxyTable;
+                   scoped_refptr<dbus::ObjectProxy>> ObjectProxyTable;
   ObjectProxyTable object_proxy_table_;
 
   // ExportedObjectTable is used to hold the exported objects created by
   // the bus object. Key is a concatenated string of service name +
   // object path, like "org.chromium.TestService/org/chromium/TestObject".
   typedef std::map<const dbus::ObjectPath,
-                   scoped_refptr<dbus::ExportedObject> > ExportedObjectTable;
+                   scoped_refptr<dbus::ExportedObject>> ExportedObjectTable;
   ExportedObjectTable exported_object_table_;
 
   // ObjectManagerTable is used to hold the object managers created by the
   // bus object. Key is a concatenated string of service name + object path,
   // like "org.chromium.TestService/org/chromium/TestObject".
   typedef std::map<std::string,
-                   scoped_refptr<dbus::ObjectManager> > ObjectManagerTable;
+                   scoped_refptr<dbus::ObjectManager>> ObjectManagerTable;
   ObjectManagerTable object_manager_table_;
 
   // A map of NameOwnerChanged signals to listen for and the callbacks to run
@@ -734,7 +733,7 @@
   // Key: Service name
   // Value: Vector of callbacks. Unique and expected to be small. Not using
   //        std::set here because base::Callbacks don't have a '<' operator.
-  typedef std::map<std::string, std::vector<GetServiceOwnerCallback> >
+  typedef std::map<std::string, std::vector<GetServiceOwnerCallback>>
       ServiceOwnerChangedListenerMap;
   ServiceOwnerChangedListenerMap service_owner_changed_listener_map_;
 
diff --git a/dbus/object_manager.h b/dbus/object_manager.h
index c17f140..a7bd5cb 100644
--- a/dbus/object_manager.h
+++ b/dbus/object_manager.h
@@ -41,7 +41,7 @@
 //       dbus::Property<std::string> name;
 //       dbus::Property<uint16_t> version;
 //       dbus::Property<dbus::ObjectPath> parent;
-//       dbus::Property<std::vector<std::string> > children;
+//       dbus::Property<std::vector<std::string>> children;
 //
 //       Properties(dbus::ObjectProxy* object_proxy,
 //                  const PropertyChangedCallback callback)
diff --git a/dbus/object_manager_unittest.cc b/dbus/object_manager_unittest.cc
index d28368b..533d55b 100644
--- a/dbus/object_manager_unittest.cc
+++ b/dbus/object_manager_unittest.cc
@@ -37,8 +37,8 @@
   struct Properties : public PropertySet {
     Property<std::string> name;
     Property<int16_t> version;
-    Property<std::vector<std::string> > methods;
-    Property<std::vector<ObjectPath> > objects;
+    Property<std::vector<std::string>> methods;
+    Property<std::vector<ObjectPath>> objects;
 
     Properties(ObjectProxy* object_proxy,
                const std::string& interface_name,
@@ -215,8 +215,8 @@
   std::string last_name_value_;
   bool timeout_expired_;
 
-  std::vector<std::pair<ObjectPath, std::string> > added_objects_;
-  std::vector<std::pair<ObjectPath, std::string> > removed_objects_;
+  std::vector<std::pair<ObjectPath, std::string>> added_objects_;
+  std::vector<std::pair<ObjectPath, std::string>> removed_objects_;
   std::vector<std::string> updated_properties_;
 
   bool method_callback_called_;
diff --git a/dbus/property.cc b/dbus/property.cc
index 0351c4a..ceff662 100644
--- a/dbus/property.cc
+++ b/dbus/property.cc
@@ -489,11 +489,11 @@
 }
 
 //
-// Property<std::vector<std::string> > specialization.
+// Property<std::vector<std::string>> specialization.
 //
 
 template <>
-bool Property<std::vector<std::string> >::PopValueFromReader(
+bool Property<std::vector<std::string>>::PopValueFromReader(
     MessageReader* reader) {
   MessageReader variant_reader(NULL);
   if (!reader->PopVariant(&variant_reader))
@@ -504,7 +504,7 @@
 }
 
 template <>
-void Property<std::vector<std::string> >::AppendSetValueToWriter(
+void Property<std::vector<std::string>>::AppendSetValueToWriter(
     MessageWriter* writer) {
   MessageWriter variant_writer(NULL);
   writer->OpenVariant("as", &variant_writer);
@@ -513,11 +513,11 @@
 }
 
 //
-// Property<std::vector<ObjectPath> > specialization.
+// Property<std::vector<ObjectPath>> specialization.
 //
 
 template <>
-bool Property<std::vector<ObjectPath> >::PopValueFromReader(
+bool Property<std::vector<ObjectPath>>::PopValueFromReader(
     MessageReader* reader) {
   MessageReader variant_reader(NULL);
   if (!reader->PopVariant(&variant_reader))
@@ -528,7 +528,7 @@
 }
 
 template <>
-void Property<std::vector<ObjectPath> >::AppendSetValueToWriter(
+void Property<std::vector<ObjectPath>>::AppendSetValueToWriter(
     MessageWriter* writer) {
   MessageWriter variant_writer(NULL);
   writer->OpenVariant("ao", &variant_writer);
@@ -537,7 +537,7 @@
 }
 
 //
-// Property<std::vector<uint8_t> > specialization.
+// Property<std::vector<uint8_t>> specialization.
 //
 
 template <>
@@ -800,8 +800,8 @@
 template class Property<double>;
 template class Property<std::string>;
 template class Property<ObjectPath>;
-template class Property<std::vector<std::string> >;
-template class Property<std::vector<ObjectPath> >;
+template class Property<std::vector<std::string>>;
+template class Property<std::vector<ObjectPath>>;
 template class Property<std::vector<uint8_t>>;
 template class Property<std::map<std::string, std::string>>;
 template class Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>;
diff --git a/dbus/property.h b/dbus/property.h
index 0559ea0..4d92a7f 100644
--- a/dbus/property.h
+++ b/dbus/property.h
@@ -41,7 +41,7 @@
 //       dbus::Property<std::string> name;
 //       dbus::Property<uint16_t> version;
 //       dbus::Property<dbus::ObjectPath> parent;
-//       dbus::Property<std::vector<std::string> > children;
+//       dbus::Property<std::vector<std::string>> children;
 //
 //       Properties(dbus::ObjectProxy* object_proxy,
 //                  const PropertyChangedCallback callback)
@@ -62,7 +62,7 @@
 //
 // Example (continued):
 //
-//     typedef std::map<std::pair<dbus::ObjectProxy*, Properties*> > Object;
+//     typedef std::map<std::pair<dbus::ObjectProxy*, Properties*>> Object;
 //     typedef std::map<dbus::ObjectPath, Object> ObjectMap;
 //     ObjectMap object_map_;
 //
diff --git a/dbus/property_unittest.cc b/dbus/property_unittest.cc
index 79aeecf..2287c22 100644
--- a/dbus/property_unittest.cc
+++ b/dbus/property_unittest.cc
@@ -36,8 +36,8 @@
   struct Properties : public PropertySet {
     Property<std::string> name;
     Property<int16_t> version;
-    Property<std::vector<std::string> > methods;
-    Property<std::vector<ObjectPath> > objects;
+    Property<std::vector<std::string>> methods;
+    Property<std::vector<ObjectPath>> objects;
     Property<std::vector<uint8_t>> bytes;
 
     Properties(ObjectProxy* object_proxy,
