<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, May 28, 2014 at 12:00 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, May 27, 2014 at 7:53 PM, Nico Rieck <<a href="mailto:nico.rieck@gmail.com">nico.rieck@gmail.com</a>> wrote:<br>

><br>
<br>
This sounds reasonable, but MSVC doesn't seem to diagnose it. It seems<br>
to happily compile the following:<br>
<br>
  struct S {<br>
    void __declspec(dllexport) foo() = delete;<br>
    void __declspec(dllexport) bar() {}<br>
  };<br>
<br>
exporting bar(), but not foo(). My (pretty old unfortunately) MinGW<br>
didn't error either.<br>
<br>
> --- a/include/clang/Basic/DiagnosticSemaKinds.td<br>
> +++ b/include/clang/Basic/DiagnosticSemaKinds.td<br>
> @@ -2093,6 +2093,8 @@ def err_attribute_dll_redeclaration : Error<<br>
>    "redeclaration of %q0 cannot add %q1 attribute">;<br>
>  def err_attribute_dllimport_function_definition : Error<<br>
>    "dllimport cannot be applied to non-inline function definition">;<br>
> +def err_attribute_dll_deleted : Error<<br>
> +  "attempt to delete %q0 function">;<br>
<br>
I think "cannot" diagnostics are more common in Clang. How about<br>
"cannot delete %q0 function".</blockquote><div><br></div><div>We'd usually phrase this the other way around:</div><div><br></div><div>  "attribute 'dllexport' cannot be applied to a deleted function"</div>
</div></div></div>