Value-initialization of class containing std::queue : <p>Here is a MCVE:</p>

<pre><code>#include &lt;queue&gt;

struct S
{
    std::queue&lt;int&gt; q;
    int r;
};

int main()
{
    S s{};
}
</code></pre>

<p>With gcc 6.x <code>-std=c++14 -pedantic</code> I get warnings </p>

<pre><code>&lt;source&gt;:11:9: warning: converting to 'std::queue&lt;int&gt;' from initializer list would use explicit constructor 'std::queue&lt;_Tp, _Sequence&gt;::queue(_Sequence&amp;&amp;) [with _Tp = int; _Sequence = std::deque&lt;int, std::allocator&lt;int&gt; &gt;]'
 S s{};
     ^
&lt;source&gt;:11:9: note: in C++11 and above a default constructor can be explicit            ^
</code></pre>

<p>In gcc 7.x, or clang , there are no warnings.  </p>

<p>My question is: Is this code actually correct or not; and if it is correct, what are the warnings trying to warn me about exactly?</p>
