Remove MOJO_STATIC_CONST_MEMBER_DEFINITION.

R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/1770493002 .
diff --git a/mojo/edk/system/channel_endpoint_id.cc b/mojo/edk/system/channel_endpoint_id.cc
index 9a13837..aa89a9f 100644
--- a/mojo/edk/system/channel_endpoint_id.cc
+++ b/mojo/edk/system/channel_endpoint_id.cc
@@ -7,8 +7,7 @@
 namespace mojo {
 namespace system {
 
-MOJO_STATIC_CONST_MEMBER_DEFINITION const uint32_t
-    ChannelEndpointId::kRemoteFlag;
+const uint32_t ChannelEndpointId::kRemoteFlag;
 
 ChannelEndpointId LocalChannelEndpointIdGenerator::GetNext() {
   ChannelEndpointId rv = next_;
diff --git a/mojo/edk/system/message_in_transit.cc b/mojo/edk/system/message_in_transit.cc
index 6e270b9..26e9252 100644
--- a/mojo/edk/system/message_in_transit.cc
+++ b/mojo/edk/system/message_in_transit.cc
@@ -17,8 +17,7 @@
 namespace mojo {
 namespace system {
 
-MOJO_STATIC_CONST_MEMBER_DEFINITION const size_t
-    MessageInTransit::kMessageAlignment;
+const size_t MessageInTransit::kMessageAlignment;
 
 struct MessageInTransit::PrivateStructForCompileAsserts {
   // The size of |Header| must be a multiple of the alignment.
diff --git a/mojo/edk/system/transport_data.cc b/mojo/edk/system/transport_data.cc
index 8d06019..fedfce6 100644
--- a/mojo/edk/system/transport_data.cc
+++ b/mojo/edk/system/transport_data.cc
@@ -30,10 +30,8 @@
                   0,
               "kMaxSizePerPlatformHandle not a multiple of alignment");
 
-MOJO_STATIC_CONST_MEMBER_DEFINITION const size_t
-    TransportData::kMaxSerializedDispatcherSize;
-MOJO_STATIC_CONST_MEMBER_DEFINITION const size_t
-    TransportData::kMaxSerializedDispatcherPlatformHandles;
+const size_t TransportData::kMaxSerializedDispatcherSize;
+const size_t TransportData::kMaxSerializedDispatcherPlatformHandles;
 
 // static
 size_t TransportData::GetMaxBufferSize() {
diff --git a/mojo/public/cpp/system/macros.h b/mojo/public/cpp/system/macros.h
index 2b6fba8..0fb076f 100644
--- a/mojo/public/cpp/system/macros.h
+++ b/mojo/public/cpp/system/macros.h
@@ -64,29 +64,6 @@
   type(const type&) = delete;                                        \
   void operator=(const type&) = delete
 
-// The C++ standard requires that static const members have an out-of-class
-// definition (in a single compilation unit), but MSVC chokes on this (when
-// language extensions, which are required, are enabled). (You're only likely to
-// notice the need for a definition if you take the address of the member or,
-// more commonly, pass it to a function that takes it as a reference argument --
-// probably an STL function.) This macro makes MSVC do the right thing. See
-// http://msdn.microsoft.com/en-us/library/34h23df8(v=vs.100).aspx for more
-// information. This workaround does not appear to be necessary after VS2015.
-// Use like:
-//
-// In the .h file:
-//   struct Foo {
-//     static const int kBar = 5;
-//   };
-//
-// In the .cc file:
-//   MOJO_STATIC_CONST_MEMBER_DEFINITION const int Foo::kBar;
-#if defined(_MSC_VER) && _MSC_VER < 1900
-#define MOJO_STATIC_CONST_MEMBER_DEFINITION __declspec(selectany)
-#else
-#define MOJO_STATIC_CONST_MEMBER_DEFINITION
-#endif
-
 namespace mojo {
 
 // Used to explicitly mark the return value of a function as unused. (Use this
diff --git a/mojo/public/cpp/system/tests/macros_unittest.cc b/mojo/public/cpp/system/tests/macros_unittest.cc
index ab4ca80..8ee8490 100644
--- a/mojo/public/cpp/system/tests/macros_unittest.cc
+++ b/mojo/public/cpp/system/tests/macros_unittest.cc
@@ -19,19 +19,6 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace mojo {
-
-// The test for |MOJO_STATIC_CONST_MEMBER_DEFINITION| is really a compile/link
-// test. To test it fully would really require a header file and multiple .cc
-// files, but we'll just cursorily verify it.
-//
-// This is defined outside of an anonymous namespace because
-// MOJO_STATIC_CONST_MEMBER_DEFINITION may not be used on internal symbols.
-struct StructWithStaticConstMember {
-  static const int kStaticConstMember = 123;
-};
-MOJO_STATIC_CONST_MEMBER_DEFINITION
-const int StructWithStaticConstMember::kStaticConstMember;
-
 namespace {
 
 // Note: MSVS is very strict (and arguably buggy) about warnings for classes
@@ -140,12 +127,6 @@
   EXPECT_EQ(123, z.value());
 }
 
-// Use it, to make sure things get linked in and to avoid any warnings about
-// unused things.
-TEST(MacrosCppTest, StaticConstMemberDefinition) {
-  EXPECT_EQ(123, StructWithStaticConstMember::kStaticConstMember);
-}
-
 // The test for |ignore_result()| is also just a compilation test. (Note that
 // |MOJO_WARN_UNUSED_RESULT| can only be used in the prototype.
 int ReturnsIntYouMustUse() MOJO_WARN_UNUSED_RESULT;
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
index 199e6ac..0b5f8a8 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
@@ -31,16 +31,16 @@
 
 {#--- Begin #}
 {%- if interface.service_name %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const char {{class_name}}::Name_[] = "{{interface.service_name}}";
+const char {{class_name}}::Name_[] = "{{interface.service_name}}";
 {%- endif %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const uint32_t {{class_name}}::Version_;
+const uint32_t {{class_name}}::Version_;
 
 {#--- Constants #}
 {%-  for constant in interface.constants %}
 {%-   if constant.kind|is_integral_kind %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}};
+const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}};
 {%-   else %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{constant|constant_value}};
+const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{constant|constant_value}};
 {%-   endif %}
 {%- endfor %}
 
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
index 50c7f1a..7598f96 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl
@@ -79,9 +79,9 @@
 {%- for struct in structs %}
 {%-   for constant in struct.constants %}
 {%-     if constant.kind|is_integral_kind %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}};
+const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}};
 {%-     else %}
-MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}} = {{constant|constant_value}};
+const {{constant.kind|cpp_pod_type}} {{struct.name}}::{{constant.name}} = {{constant|constant_value}};
 {%-     endif %}
 {%-   endfor %}
 {%- endfor %}