[C++] constructions temporaires
(Re)bonsoir,
est-ce que:
Code:
1 2 3 4 5 6 7
| void test(const char *val)
{
int n;
std::string str(val);
std::istringstream strs(str);
strs >> n;
} |
peut être réduit en:
Code:
1 2 3 4 5
| void test(const char *val)
{
int n;
std::istringstream(std::string(val)) >> n;
} |
les deux syntaxes sont équivalentes?
Pourquoi par contre:
Code:
1 2 3 4 5 6
| void test(const char *val)
{
int n;
std::istringstream strs(std::string(val));
strs >> n;
} |
donne une erreur de compilation
error C2296: '>>' : illegal, left operand has type 'std::istringstream (__cdecl *)(std::string)'?