On quarta-feira, 24 de fevereiro de 2016 20:13:44 PST Jean-Michaël Celerier wrote: > I saw some other approaches to produce static reflection information by > libclang usage, > would inspired approaches be acceptable ? e.g. > https://github.com/AustinBrunkhorst/CPP-Reflection/ > > Also, why is "#include'ing it from your class's header file," considered > bad ?
Because it means that you need to install the Moc output as a header file for ALL of your users to include. The output isn't meant for that, as it has an #if check that you're compiling against the QtCore headers which came along with the moc that created that output. It also declares functions and variables that aren't properly namespaced for headers, and it declares static variables that would end up in every since translation unit that #included the output. And that's just what we can fix, with some work. > In "standard" Qt software, it is sometimes useful to #include > "foo_moc.cpp" (or foo.moc, I don't remember) > in the implementation file, for instance if multiple classes are defined in > the same header IIRC. Right, but you're including it from the .cpp and you never distribute that moc_foo.cpp file. We're talking about including it from a header and distributing that with your software so your users include it too (indirectly). > But when doing template-heavy software the .hpp have more or less the same > role > for the developer that "traditional" implementation files so it should not > come as shocking to require > inclusion of files in the .hpp. But it's only my personal opinion. We find that poor coding practice. All-inline template code leads to template bloat because the no compilers is currently able to merge implementations that produce the same code, if they come from different functions. Qt takes care to fall back to a common implementation, often non-inline, for its template classes whenever it can. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest