[TypeErasure] Reference of forward declared type requires complete type
Hi all,
I try to use boost.type_erasure (boost 1.59) with forward declared type
as shown below:
================================================
#include
;
int main() {
Any obj;
}
================================================
However, the compiler (e.g. clang) complains about incomplete type:
================================================
/usr/local/include/boost/type_traits/is_base_and_derived.hpp:228:42:
error: incomplete type 'Type' used in type trait expression
BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && !
::boost::is_same
AMDG On 09/03/2015 09:20 PM, Yuan Yao wrote:
<snip>
struct Type;
BOOST_TYPE_ERASURE_MEMBER((HasTest), Test, 1)
<snip> HasTest
, <snip> ================================================ However, the compiler (e.g. clang) complains about incomplete type:
================================================ /usr/local/include/boost/type_traits/is_base_and_derived.hpp:228:42: error: incomplete type 'Type' used in type trait expression BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && ! ::boost::is_same
::value)); ================================================ Replacing Type& with Type* can fix the problem. Is this a bug?
Probably. Is boost::type_erasure::is_placeholder in the instantiation backtrace? In Christ, Steven Watanabe
participants (2)
-
Steven Watanabe
-
Yuan Yao