|
Boost Users : |
From: Ovanes Markarian (om_boost_at_[hidden])
Date: 2008-05-01 13:45:45
Please read below. Just got an angry email from some pedantic Mailing-List
guard.
On Thu, May 1, 2008 at 6:07 PM, Hicham Mouline <hicham_at_[hidden]> wrote:
> Thanks for your clarifications,
>
> In your example, if "MyFunc" was typedef'd before its use in the template
> argument as say
> typedef int (*MyFunc)(int);
> it would not conflict with its use in the template argument ?
>
First of all. I am sorry for an error I made when stated:
template<T MyFunc()>
struct X
{
typedef T result_type;
typedef MyFunc function_type;
};
This is not a valid C++ code, since MyFunc as the template parameter is a
real pointer to a function, it is not a type. And you cannot make a typedef
for a pointer. Only for it's type.
To visualize the usage I have written a small program:
#include <iostream>
#include <typeinfo>
typedef int (*MyFunc)(int, int);
int get_int(int x)
{
return x;
}
int plus(int x, int y)
{
return x+y;
}
template<int (*MyFunc)(int)>
struct X
{
typedef int result_type;
result_type exec()const
{
::MyFunc f2 = + //use scope resolution to access the global
MyFunc
return MyFunc(10)+f2(10,10);
}
};
int main(int argc, char* argv[])
{
X<&get_int> x;
std::cout << "sum: " << x.exec() << "\n";
}
> best regards,
>
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net