Nice writeup! I've done some work with libdwarf and I agree that it isn't very pleasant. Do you have any suggestions for better interfaces that support writing?
277 karma · joined February 22, 2015
But I don't keep up with this area, so maybe the status of that work is more contentious than Scott Aaronson makes it appear.
One issue (I'm not sure how it could be fixed) is that sections of code that were disabled by the preprocessor are not highlighted at all. For example, the compiler (or flags) used when parsing the boost code did not support move semantics, so "BOOST_NO_CXX11_RVALUE_REFERENCES" was defined, which means this line is not parsed:
https://code.woboq.org/boost/boost/boost/any.hpp.html#69
But this is a minor thing, and I'm not sure there's really a solution.
template<class T> class Foo;
template<typename T> class Foo;
Are the same. But, not when declaring a template with a parameter that is itself a template: template<template<typename> class T> struct Foo; // Compiles
template<template<typename> typename T> struct Foo; // Does not compile
The proposal allows the second form to compile, fixing this inconsistency.In general, I don't think C++ (or D) devs should be using deduced return types in the public interface, if at all possible.