Ernesto Durante <stobos...@gmail.com> writes: > Thierry Banel <tbanelweb...@free.fr> writes: > >>> I have identified a minor bug. When a source code block has the mode >>> cpp, we cannot expand the code or more precisely the code is not >>> expanded in the correct way because the following function is missing >>> >>> (defun org-babel-expand-body:cpp (body params) >>> "Execute BODY according to PARAMS.This function calls >>> `org-babel-expand-body:C++'." >>> (org-babel-expand-body:C++ body params)) >> Thanks for reporting this ! You may consider submitting a patch for this >> bug. The comment "Execute BODY ..." should be changed to "Expand BODY ...". >> >>> > Ok I will change the comment >
I'd be happy to commit this patch after you make this change and re-format with "git format-patch". Also, please consider filling out the FSF copyright assignment paperwork, so that we may accept larger patches from you in the future. Thanks for you contributions! Eric > >>> Best >>> Ernesto >> You are very welcome >> Thierry > > Thank you Thierry for your answer and all the details. I really want to be a > contributor > and help ob-C to improve (as well as can do a modest lisper). > > I tried to find a way to master Cx11 and babel is helping me a lot. > I think babel can really accelerate learning and dissimation of C++. > > In this perspective, I have another very simple idea that I want to share > with you. I find C++ too noisy. In the following piece of code > I really find the presence of the main call and the return statement really > annoying and useless. > > #+begin_src C++ :includes '(<iostream> <cassert>) :results silent > template <typename T1, typename T2> > auto compose(T1 t1, T2 t2) -> decltype(t1 + t2) { return t1+t2; } > > int main() { > auto d=compose(std::string("ola"),std::string("ciao")); //d's type is > std::string > auto i=compose(4,2); > assert(d== std::string("olaciao") && i==6); > return 0 > } > #+end_src > > > We can remove it by letting ob-C do the work by modifying the function > org-babel-C-ensure-main-wrap. Now the code looks (according to me) easier to > read > > #+begin_src C++ :includes '(<iostream> <cassert>) :results silent > template <typename T1, typename T2> > auto compose(T1 t1, T2 t2) -> decltype(t1 + t2) { return t1+t2; } > > template <> > int compose(int t1,int t2) { return t1+t2; } > > ////main//// > auto d=compose(std::string("ola"),std::string("ciao")); //d's type is > std::string > auto i=compose(4,2); > assert(d== std::string("olaciao") && i==6); > #+end_src > > What do you think ? > > Best > Ernesto > > > -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D (see https://u.fsf.org/yw)