- Defining a function without return type (typically used with
main
) is not supported. - Defining a class and a variable of the same class simultaneously (
struct A {} a;
) is not supported. - Unused global variables get removed. This is fine, unless you use such a
variable for side effects. In that case, mark the variable with a comment
/// caide keep
or/** caide keep **/
(note the triple slash and the double asterisk). For example,
struct SideEffect {...};
/// caide keep
SideEffect instance;
In general, if you find that caide removes a declaration by mistake, mark
this declaration with caide keep
(and file an issue :)).
- Integral constants get removed even if they are used as a template argument:
const int N = 42;
template<int n> func() {}
func<N>();
- On Linux, if you use system headers, then caide will not be able to parse
one of GNU-specific headers from
pb_ds
namespace. Workaround: either apply this small change directly in your system (file path is/usr/include/c++/4.8/ext/pb_ds/detail/bin_search_tree_/traits.hpp
or similar), or use MinGW headers coming with caide (initialize caide withcaide init
, without--cpp-use-system-headers
flag).