Welcome to the { mindfrost82.com } forums.

You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact contact us.

Go Back   { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Programming > C++

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 08-09-2008, 04:59 PM
rkldabs@gmail.com
 
Posts: n/a
Return type

Hi,

I am trying to figure out which portion of the N2691 explicitly
mentions that the return type of a function can be a pointer or
reference to an incomplete type. $8.3.5/9 of course states that "The
type of a parameter or the return type for a function definition shall
not be an incomplete class type....", but I could not figure out
anything with respect to pointer or reference to incomplete type for
return type.

Please let me know.

struct A;

struct B{
A& f(); // function returning reference to an incomplete type
};

struct A{};

A& B::f(){static A a; return a;}
int main(){
B object;
}

Regards,
Dabs.

--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Reply With Quote
  #2 (permalink)  
Old 08-10-2008, 04:57 PM
JoshuaMaurice@gmail.com
 
Posts: n/a
Re: Return type

On Aug 9, 8:59 am, rkld...@gmail.com wrote:
> I am trying to figure out which portion of the N2691 explicitly
> mentions that the return type of a function can be a pointer or
> reference to an incomplete type. $8.3.5/9 of course states that "The
> type of a parameter or the return type for a function definition shall
> not be an incomplete class type....", but I could not figure out
> anything with respect to pointer or reference to incomplete type for
> return type.


class T;
T foo();
T * bar();
T & baz();

foo returns an incomplete type. bar returns a pointer to an incomplete
type, and baz returns a reference to an incomplete type. T is an
incomplete type. A pointer to T is a pointer to an incomplete type. A
pointer to an incomplete type is a complete type.

--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Reply With Quote
  #3 (permalink)  
Old 08-10-2008, 05:01 PM
red floyd
 
Posts: n/a
Re: Return type

rkldabs@gmail.com wrote:
> Hi,
>
> I am trying to figure out which portion of the N2691 explicitly
> mentions that the return type of a function can be a pointer or
> reference to an incomplete type. $8.3.5/9 of course states that "The
> type of a parameter or the return type for a function definition shall
> not be an incomplete class type....", but I could not figure out
> anything with respect to pointer or reference to incomplete type for
> return type.
>
> Please let me know.
>
> struct A;
>
> struct B{
> A& f(); // function returning reference to an incomplete type
> };
>
> struct A{};
>
> A& B::f(){static A a; return a;}
> int main(){
> B object;
> }
>
> Regards,
> Dabs.
>


As far as I know, returning a reference or a pointer to an incomplete
type has been legal since C++98. In fact, returning a pointer to an
incomplete type has been legal in C since C90.

--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Reply With Quote
  #4 (permalink)  
Old 08-10-2008, 05:03 PM
Alberto Ganesh Barbati
 
Posts: n/a
Re: Return type

rkldabs@gmail.com ha scritto:
> Hi,
>
> I am trying to figure out which portion of the N2691 explicitly
> mentions that the return type of a function can be a pointer or
> reference to an incomplete type. $8.3.5/9 of course states that "The
> type of a parameter or the return type for a function definition shall
> not be an incomplete class type....", but I could not figure out
> anything with respect to pointer or reference to incomplete type for
> return type.


A pointer or reference type is always a complete type, regardless of the
fact the pointed/referred type is incomplete. So you don't need an
explicit statement to allow them nor there's a reason to disallow them.
Their case is thus covered by the general statement you already mentioned.

HTH,

Ganesh

--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Reply With Quote
Reply

  { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Programming > C++


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are Off
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:08 PM.


Powered by vBulletin, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.
© 1999-2008 mindfrost82.com v11.0


Sponsors:
Optical Illusions | Advertising | Currency Converter | Loan | Mortgage Calculator



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114