<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <title></title>
  <style type="text/css">code{white-space: pre;}</style>
</head>
<body>
<p>Hi Jan,</p>
<p>This message is somewhat of a copy+paste of what I wrote in <code>#videolan</code> @ <code>freenode</code>, as I believe it is better to propagate my opinions raised there to the <em>mailing-list</em>.</p>
<p>The problem that your patch address was mentioned by <em>Sean McGovern</em> back in September last year:</p>
<ul>
<li>https://mailman.videolan.org/pipermail/vlc-devel/2016-September/109451.html</li>
</ul>
<p>On 2017-02-07 02:39, Jan Ekström wrote:</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> The tested functionality is not utilized in actual VLC code, and
 it exists in GCC 4.8.x, albeit under an incorrect name. 4.8.x is
 still utilized in LTS systems, such as Ubuntu 14.04.
 ---
  m4/stdcxx_11.m4 | 12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)</code></pre>
</blockquote>
<p>Effectively circumventing this check will only postpone the problem until some module that expect a confirming <code>c++11</code> implementation will refers to <code>max_align_t</code> as with its <em>qualified-id</em>.</p>
<p>In order to make this patch more complete, a <em>fixup</em> for <code>gcc 4.8.4</code> which injects <code>max_align_t</code> into <code>namespace std</code> would be necessary.</p>
<p>I understand that it is tempting to circumvent the check as there are no modules within the codebase that currently refers to <code>std::max_align_t</code>; but allowing a non-confirming compiler to pass the test means that we end up in a scenario where we have to decide where the line should be drawn for other compilers that might “benefit” from the same treatment.</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> diff --git a/m4/stdcxx_11.m4 b/m4/stdcxx_11.m4
 index 59df0a0..0c515ae 100644
 --- a/m4/stdcxx_11.m4
 +++ b/m4/stdcxx_11.m4
 @@ -87,10 +87,20 @@ m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
      #include <climits>
      #include <cstddef>

 +    #define MAX_ALIGN std::max_align_t
 +
 +    #if defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__clang__)
 +    #define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
 +    #if GCC_VERSION <= 408
 +    #undef MAX_ALIGN
 +    #define MAX_ALIGN ::max_align_t
 +    #endif
 +    #endif
 +
      constexpr uint64_t constant_u64 = UINT64_C(0x100000000);
      constexpr unsigned constant_lim = UINT_MAX;
      const char *constant_fmt = "%" PRIu64, *constant_scn = "%" SCNu64;
 -    constexpr size_t constant_align = alignof (std::max_align_t);
 +    constexpr size_t constant_align = alignof (MAX_ALIGN);</code></pre>
</blockquote>
<p>The above check can be simplified by making use of <code>using namespace std</code>, and then refer to <code>max_align_t</code> as an <em>unqualified-id</em> (given that the name either lives in the global namespace, or under <code>namespace std</code>).</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code>  ]])

  AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
 -- 
 2.9.3</code></pre>
</blockquote>
<p><code>gcc 4.8.4</code> is a weird beast as there are <strong>very</strong> minor non-confirming entities within it; so I definitely see why you would like things to build without having to do manual labor.</p>
</body>
</html>