#include <iostream>
class Wrap
{
public:
Wrap(int x) : value(x) {}
private:
int value;
template <class T>
friend void out(const T&);
};
template <>
void out(const Wrap& x)
{ std::cout << x.value << std::endl; }
int main()
{
Wrap x(42);
out(x);
return 0;
}
#include <iostream>
namespace qq {
template <class T>
void out(const T&);
}
class Wrap
{
public:
Wrap(int x) : value(x) {}
private:
int value;
template <class T>
friend void qq::out(const T&);
};
template <>
void qq::out(const Wrap& x)
{ std::cout << x.value << std::endl; }
int main()
{
Wrap x(42);
qq::out(x);
return 0;
}