// enabl.cc -*- mode:c++, compile-command:"g++ -Wall -Wextra -pedantic -std=c++0x enabl.cc -o enabl && ./enabl" -*-
#include <iostream>
#include <algorithm>
#include <vector>
template <bool R, bool W>
struct X {
template <bool Enabled = R,
typename = typename std::enable_if<Enabled>::type>
void read() {}
template <bool Enabled = W,
typename = typename std::enable_if<Enabled>::type>
void write() {}
bool is_open() const {};
};
int main()
{
{ X<true, true> x; x.read(); x.write(); }
{ X<false, true> x; x.write(); }
{ X<true, false> x; x.read(); }
{ X<false, false> x; }
}
Ly8gZW5hYmwuY2MgLSotIG1vZGU6YysrLCBjb21waWxlLWNvbW1hbmQ6ImcrKyAtV2FsbCAtV2V4dHJhIC1wZWRhbnRpYyAtc3RkPWMrKzB4IGVuYWJsLmNjIC1vIGVuYWJsICYmIC4vZW5hYmwiIC0qLQojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZSA8Ym9vbCBSLCBib29sIFc+CnN0cnVjdCBYIHsKICB0ZW1wbGF0ZSA8Ym9vbCBFbmFibGVkID0gUiwKICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxFbmFibGVkPjo6dHlwZT4KICB2b2lkIHJlYWQoKSB7fQogIHRlbXBsYXRlIDxib29sIEVuYWJsZWQgPSBXLAogICAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEVuYWJsZWQ+Ojp0eXBlPgogIHZvaWQgd3JpdGUoKSB7fQogIGJvb2wgaXNfb3BlbigpIGNvbnN0IHt9Owp9OwoKaW50IG1haW4oKQp7CiAgeyBYPHRydWUsIHRydWU+IHg7IHgucmVhZCgpOyB4LndyaXRlKCk7IH0KICB7IFg8ZmFsc2UsIHRydWU+IHg7ICAgICAgICAgIHgud3JpdGUoKTsgfQogIHsgWDx0cnVlLCBmYWxzZT4geDsgeC5yZWFkKCk7IH0KICB7IFg8ZmFsc2UsIGZhbHNlPiB4OyAgfQp9Cgo=