|
Boost : |
From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-06-03 05:26:59
Hello,
the program_options library fails one tests on EDG compilers (Intel, Como),
which a failure to deduce template arguments for a certain call. After reading
the standard for some time, I failed to understand the reason.
Below is the test program:
char* cmdline3_[1] = {};
template<class charT>
void func(const charT* const argv[]) {}
int main()
{
// P is 'const charT* const argv[]'cmdline3_
// A is 'char* cmdline3_[]'
//
// According to 14.8.2.1/2
// If P is not reference type
// -If A is an array type, the pointer type produced
// by the array-to-pointer standard convertion (4.2)
// is used in place of A for type deduction.
//
// So, A should become 'char**'
// The following does not compile.
func(cmdline3_);
char** p = cmdline3_;
// This does compile, even though the argument type used for
// type deduction should be the same as in example above.
func(p);
}
Anybody can explain what's going on?
TIA,
Volodya
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk