Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #68757

Re: a style question:

From Melzzzzz <mel@zzzzz.com>
Newsgroups comp.lang.c
Subject Re: a style question:
Date 2015-08-31 17:46 +0200
Organization albasani.net
Message-ID <20150831174610.7d3167b0@maxa-pc> (permalink)
References <8d16838c-60db-4fd2-b401-737ee2601d1d@googlegroups.com> <6e9323cb-1dff-4bff-b19a-d4b1da735ffb@googlegroups.com> <ms1bf1$peo$1@dont-email.me>

Show all headers | View raw


On Mon, 31 Aug 2015 11:50:50 +0100
Bartc <bc@freeuk.com> wrote:

> On 31/08/2015 11:24, Malcolm McLean wrote:
> > On Monday, August 31, 2015 at 10:31:04 AM UTC+1, G G wrote:
> >> i am seeing some code that has the function return type on a
> >> separate line like
> >>
> >> int
> >> function( double a)
> >> {
> >> ...
> >> }
> >>
> >> i'm just curious, is there a name for this style?
> >> and why use this style other than the project uses this style?
> >>
> > You see it  a lot in C++.
> > C++ functions will often return something like
> >
> > Usr::Graphics::BezierPathSimple<Math::real64_t, GREEN>
> 
> Those guys really like to spell things out don't they? Buried
> somewhere in there is .... well I'm not sure exactly!
> 
> Since the subject was function definitions, I assumed it was. Then I 
> looked more carefully and thought it must have been a function call. 
> Then I looked yet again, and it might be function definition after
> all.
> 
> But yet, you say this is something returned by a function. So I don't 
> know what the hell it might be. What a language! (If C++ had never
> been invented, and someone presented something like this, we'd all
> think it was a wind-up.)
> 

Take a look at this expressive power, how many lines of code you need in C for this:

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <type_traits>

namespace mine {
	using std::begin;
	using std::end;
	template <class T>
	decltype(begin(std::declval<T&>()),
		end(std::declval<T&>()),
		std::true_type{}) 
	is_container(int);
	template <class T>
	std::false_type is_container(...);
};

template <class T>
using is_container = decltype(mine::is_container<T>(0));

template <class T>
void print(const T& cnt,std::true_type)
{
	for(auto i:cnt)std::cout<<i<<'\n';
}

template <class T>
void print(const T& cnt,std::false_type)
{
	std::cout<<cnt<<'\n';
}

void print(){}

template <class K,class ...T>
void print(const K&k, const T&...t)
{
	print(k,is_container<K>{});
	print(t...);
}

struct Prt1 {
	std::string prt = "famous";
	Prt1(){}
	const char* begin()const
	{
		return prt.data();
	}

	const char* end()const
	{
		return prt.data()+prt.size();
	}

};

struct Prt2 {
	int a = 5;
	float b = 3.4;
	Prt2(){}
	friend std::ostream& operator<<(std::ostream& os, const Prt2& p2) {
		os<<p2.a<<' '<<p2.b;
		return os;
	}
};

int main(){
	std::list<std::string> a={"a","b","c"};
	std::vector<float> b = {1.1,1.2};
	int arr[10]={0};
	print(a,' ',200,b,arr,Prt1{},Prt2{});
}

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

a style question: G G <gdotone@gmail.com> - 2015-08-31 02:30 -0700
  Re: a style question: Ian Collins <ian-news@hotmail.com> - 2015-08-31 21:40 +1200
  Re: a style question: jt@toerring.de (Jens Thoms Toerring) - 2015-08-31 09:52 +0000
  Re: a style question: Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-08-31 03:24 -0700
    Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 11:50 +0100
      Re: a style question: Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-08-31 13:21 +0100
        Re: a style question: Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-08-31 05:41 -0700
        Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 14:55 +0100
          Re: a style question: Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-08-31 15:50 +0100
            Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 18:40 +0100
      Re: a style question: Melzzzzz <mel@zzzzz.com> - 2015-08-31 17:46 +0200
        Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 17:27 +0100
          Re: a style question: Melzzzzz <mel@zzzzz.com> - 2015-08-31 18:42 +0200
      Re: a style question: Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-08-31 17:41 +0000
        Re: a style question: Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-08-31 15:33 -0700
          Re: a style question: Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-09-01 08:34 +0000
      Re: a style question: Ian Collins <ian-news@hotmail.com> - 2015-09-01 07:40 +1200
        Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 21:36 +0100
          Re: a style question: Ian Collins <ian-news@hotmail.com> - 2015-09-01 08:51 +1200
            Re: a style question: Bartc <bc@freeuk.com> - 2015-08-31 22:37 +0100
              Re: a style question: Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-08-31 15:24 -0700
                Re: a style question: Ian Collins <ian-news@hotmail.com> - 2015-09-02 19:37 +1200
          Re: a style question: jt@toerring.de (Jens Thoms Toerring) - 2015-08-31 23:33 +0000
            Re: a style question: Bartc <bc@freeuk.com> - 2015-09-01 01:13 +0100
              Re: a style question: Ian Collins <ian-news@hotmail.com> - 2015-09-01 18:21 +1200
              Re: a style question: jt@toerring.de (Jens Thoms Toerring) - 2015-09-01 15:23 +0000
                Re: a style question: Bartc <bc@freeuk.com> - 2015-09-01 18:06 +0100
                Re: a style question: Jorgen Grahn <grahn+nntp@snipabacken.se> - 2015-09-01 20:39 +0000
                Re: a style question: jt@toerring.de (Jens Thoms Toerring) - 2015-09-01 20:45 +0000
                Re: a style question: Bartc <bc@freeuk.com> - 2015-09-01 22:53 +0100
            Re: a style question: Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-08-31 17:51 -0700

csiph-web