emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] babel: ob-C with Visual C++ and compilation-mode


From: Ernesto Durante
Subject: Re: [O] babel: ob-C with Visual C++ and compilation-mode
Date: Wed, 13 Aug 2014 22:58:23 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.92 (gnu/linux)

Thierry Banel <address@hidden> 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

>> 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]