#include <iostream>
using namespace std;
template <typename T>
class DoubleBuffer {
public:
using value_type = T;
using reference = T&;
using const_reference = T const &;
using const_type = const T;
using pointer = T*;
//...
};
int main() {
int dummy;
DoubleBuffer<int>::value_type vt = dummy;
DoubleBuffer<int>::reference ref = dummy;
DoubleBuffer<int>::const_reference cref = dummy;
DoubleBuffer<int>::const_type ct = 12345;
DoubleBuffer<int>::pointer p = &dummy;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIERvdWJsZUJ1ZmZlciB7CnB1YmxpYzoKICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBUOwogICAgdXNpbmcgcmVmZXJlbmNlID0gVCY7CiAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBUIGNvbnN0ICY7CiAgICB1c2luZyBjb25zdF90eXBlID0gY29uc3QgVDsKICAgIHVzaW5nIHBvaW50ZXIgPSBUKjsKICAgIC8vLi4uCn07CgppbnQgbWFpbigpIHsKICAgIGludCBkdW1teTsKICAgIERvdWJsZUJ1ZmZlcjxpbnQ+Ojp2YWx1ZV90eXBlIHZ0ID0gZHVtbXk7CiAgICBEb3VibGVCdWZmZXI8aW50Pjo6cmVmZXJlbmNlIHJlZiA9IGR1bW15OwogICAgRG91YmxlQnVmZmVyPGludD46OmNvbnN0X3JlZmVyZW5jZSBjcmVmID0gZHVtbXk7CiAgICBEb3VibGVCdWZmZXI8aW50Pjo6Y29uc3RfdHlwZSBjdCA9IDEyMzQ1OwogICAgRG91YmxlQnVmZmVyPGludD46OnBvaW50ZXIgcCA9ICZkdW1teTsKCglyZXR1cm4gMDsKfQ==