Re: [Boost-users] boost::result_of error?
But "floatfct" was defined earlier as the type of a pointer to a function
with only 1 arg float.just passing the template argument to result_of
creates a new type?is the new type also called floatfct ?
----- Original Message -----
From: "Ovanes Markarian"
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] boost::result_of error?
Date: Thu, 1 May 2008 13:58:21 +0200
Hicham,
as far as I understand your code you pass to result_of a new type:
typedef typename boost::result_of
Hicham,
it does not create a new new type it only declares a type.
Consider the following example:
template
But "floatfct" was defined earlier as the type of a pointer to a function with only 1 arg float. just passing the template argument to result_of creates a new type? is the new type also called floatfct ?
----- Original Message ----- From: "Ovanes Markarian" To: boost-users@lists.boost.org Subject: Re: [Boost-users] boost::result_of error? Date: Thu, 1 May 2008 13:58:21 +0200
Hicham,
as far as I understand your code you pass to result_of a new type: typedef typename boost::result_of
::type resultype; This type is a pointer to a function type, which has as return type a pointer to floatfct and as params float, float. That's why it compiles.
Regards, Ovanes
On Thu, May 1, 2008 at 1:25 PM, Hicham Mouline
wrote: Hello, trying out Pete Becker's "c++ std lib ext" exercises, ex1 p155
#include <iostream> #include <typeinfo> #include
typedef float (*floatfct)(float); int main(int argc, char* argv[]) { typedef typename boost::result_of
::type resultype; std::cout<< typeid(resultype).name() << std::endl; } should fail, because result_of is instantiated with a callable type with 2 float args, while it's been defined as taking 1 float arg only?
with intel10.1-MSVC8-boost1.35, it links.
rds, _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
AMDG Ovanes Markarian wrote:
Hicham,
it does not create a new new type it only declares a type.
Consider the following example:
template
struct X {}; This means your type X expects a function pointer type with return value int and no parameters. This can be used in a meta programming to make some type assumptions or inspection. This is how the result_of works. Think of result_of as of type X but a bit more complex and which can give an assumption about the function type passed. We can write:
template
struct X { typedef int type; }; <snip>
Here MyFunc is a name of the function pointer type, which allows us to reference this type from inside the template.
Hope that helps.
This has very little to do with result_of.
The expression result_of
Ovanes Markarian
participants (4)
-
abdullah
-
Hicham Mouline
-
Ovanes Markarian
-
Steven Watanabe