为什么这句话错了?
(*std::cout.operator<<) (std::endl);
我只是通过后期绑定调用std :: endl ......
答案 0 :(得分:3)
成员函数始终是类成员,而不是对象成员。与你尝试做的最接近的是:
std::ostream & (std::ostream::* fp)(std::ostream &(*)(std::ostream&))
= &std::ostream::operator<<;
(std::cout.*fp)(std::endl);
即,您形成一个指向类成员函数的指针 fp
,然后在std::cout
对象上调用相应的成员函数。
答案 1 :(得分:0)
我说最接近的实际值是
auto lambda = [](auto x){std::cout << x;};
lambda(std::endl);
或作为单一陈述
[](auto x){std::cout << x;}(std::endl);
你的编译器可能还不支持这个。