#include <iostream>
// Forward declarations
template <typename T> class C;
template <typename T> std::ostream& operator<<(std::ostream& os, const C<T>& dt);
template <typename T>
class C
{
public:
explicit C(T data) : data_(data) {}
friend std::ostream& operator<< <>(std::ostream& os, const C& dt);
private:
T data_;
};
template <typename T>
std::ostream& operator<<(std::ostream& os, const C<T>& dt)
{
return os << dt.data_;
}
int main()
{
C<int> der(234);
std::cout << der;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEM7CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgQzxUPiYgZHQpOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIEMKewpwdWJsaWM6CiAgICBleHBsaWNpdCBDKFQgZGF0YSkgOiBkYXRhXyhkYXRhKSB7fQogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCA8PihzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBDJiBkdCk7CnByaXZhdGU6CiAgICBUIGRhdGFfOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBDPFQ+JiBkdCkKewogICAgcmV0dXJuIG9zIDw8IGR0LmRhdGFfOwp9CgoKaW50IG1haW4oKQp7CiAgICBDPGludD4gZGVyKDIzNCk7CiAgICBzdGQ6OmNvdXQgPDwgZGVyOwp9Cg==