[llvm-bugs] [Bug 35842] New: Clang 6 fails to compile boost variant code in unnamed namespace
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Jan 5 22:24:59 PST 2018
https://bugs.llvm.org/show_bug.cgi?id=35842
Bug ID: 35842
Summary: Clang 6 fails to compile boost variant code in unnamed
namespace
Product: clang
Version: 6.0
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: david at davidhallas.dk
CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
Created attachment 19640
--> https://bugs.llvm.org/attachment.cgi?id=19640&action=edit
Simplified test case
Clang 6 fails to compile the simple example attached to the bug. It fails with
the following error:
In file included from test.cpp:1:
In file included from /usr/include/boost/variant/variant.hpp:30:
In file included from /usr/include/boost/variant/detail/initializer.hpp:21:
In file included from /usr/include/boost/detail/reference_content.hpp:19:
In file included from /usr/include/boost/type_traits/has_nothrow_copy.hpp:19:
In file included from
/usr/include/boost/type_traits/is_copy_constructible.hpp:17:
In file included from /usr/include/boost/type_traits/is_constructible.hpp:17:
In file included from /usr/include/boost/type_traits/is_destructible.hpp:19:
/usr/include/boost/type_traits/declval.hpp:40:44: error: function
'boost::declval<(anonymous namespace)::Pod &>' is used but not defined in this
translation unit, and cannot be defined in any other translation unit because
its
type does not have linkage
typename add_rvalue_reference<T>::type declval() BOOST_NOEXCEPT; // as
unevaluated operand
^
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:112:30: note: used
here
return vis()( boost::declval< value_t& >() );
^
1 error generated.
If I move the Pod type out of the unnamed namespace it compiles fine. Also if
the visitor type is, say an int, it also compiles fine.
The same code compiles fine with clang-5 and gcc-6.
I have tested with boost-1.63.0 and boost-1.66.0 but with no difference.
The code is compiled with
clang++ -c test.cpp
--
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/20180106/4598373f/attachment.html>
More information about the llvm-bugs
mailing list