[llvm-bugs] [Bug 26076] New: dllexport vs template instantiation, nested class, and in-class initialization
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Jan 8 07:54:50 PST 2016
https://llvm.org/bugs/show_bug.cgi?id=26076
Bug ID: 26076
Summary: dllexport vs template instantiation, nested class, and
in-class initialization
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: hans at chromium.org
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
>From crbug.com/575700:
struct LayerSelectionBound;
template <typename> struct Selection {};
typedef Selection<LayerSelectionBound> LayerSelection;
struct LayerImpl;
struct __declspec(dllexport) LayerTreeImpl {
struct __declspec(dllexport) ElementLayers {
LayerImpl *main = nullptr;
};
LayerSelection foo;
};
$ bin/clang -target i686-pc-win32 -c /tmp/a.cc
/tmp/a.cc:8:16: error: cannot use defaulted default constructor of
'ElementLayers' within 'LayerTreeImpl' outside of member functions because
'main' has an
initializer
LayerImpl *main = nullptr;
^
/tmp/a.cc:10:18: note: in instantiation of template class
'Selection<LayerSelectionBound>' requested here
LayerSelection foo;
^
/tmp/a.cc:7:32: note: implicit default constructor for
'LayerTreeImpl::ElementLayers' first required here
struct __declspec(dllexport) ElementLayers {
^
/tmp/a.cc:7:21: note: due to 'ElementLayers' being dllexported
struct __declspec(dllexport) ElementLayers {
^
1 error generated.
PR23542 was the bug for dllexport vs in-class initializers in general.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160108/b4b1e4c3/attachment.html>
More information about the llvm-bugs
mailing list