
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