<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Can not derive from time_get_byname"
href="https://bugs.llvm.org/show_bug.cgi?id=36353">36353</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Can not derive from time_get_byname
</td>
</tr>
<tr>
<th>Product</th>
<td>libc++
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>All Bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>jasonliu.development@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org, mclow.lists@gmail.com
</td>
</tr></table>
<p>
<div>
<pre>I think this is a valid use case:
#include <locale>
typedef std::char_traits<wchar_t> It;
typedef std::istreambuf_iterator<wchar_t, It> Isit;
struct Mytime : public std::time_get_byname<wchar_t, Isit> {
Mytime(const char *name, size_t refs)
: std::time_get_byname<wchar_t, Isit>(name, refs) {}
};
int main(){
const Mytime t("A",1);
}
When I compile this, I get a bunch of undefined symbols:
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::do_date_order() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__X() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__c() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__r() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__x() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__am_pm() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__weeks() const", referenced from:
vtable for Mytime in bb-639bbe.o
"std::__1::time_get_byname<wchar_t, std::__1::istreambuf_iterator<wchar_t,
std::__1::char_traits<wchar_t> > >::__months() const", referenced from:
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__X() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__c() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__r() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__x() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__am_pm() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__weeks() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
"non-virtual thunk to std::__1::time_get_byname<wchar_t,
std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >
<span class="quote">>::__months() const", referenced from:</span >
vtable for Mytime in bb-639bbe.o
When I look at the header and I saw those functions are marked as "always
inline" and "hidden", any reason why those functions are marked as hidden in
the library?</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>