#include <string>
template <bool A=true, bool B=false>
struct from {
const static std::string value;
};
// no specialization - works
template <bool A, bool B>
const std::string from<A, B>::value = "";
// partial specialization - does not compile -
// Error: template argument list following class template name must list parameters in the // order used in template parameter list
template <bool B>
const std::string from<true, B>::value = "";
// full specialization - works
const std::string from<false, true>::value = "";
int main() {
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KCgp0ZW1wbGF0ZSA8Ym9vbCBBPXRydWUsIGJvb2wgQj1mYWxzZT4Kc3RydWN0IGZyb20gewogICAgY29uc3Qgc3RhdGljIHN0ZDo6c3RyaW5nIHZhbHVlOyAKfTsKIAovLyBubyBzcGVjaWFsaXphdGlvbiAtIHdvcmtzCnRlbXBsYXRlIDxib29sIEEsIGJvb2wgQj4KY29uc3Qgc3RkOjpzdHJpbmcgZnJvbTxBLCBCPjo6dmFsdWUgPSAiIjsKCi8vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gLSBkb2VzIG5vdCBjb21waWxlIC0gIAovLyBFcnJvcjogdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBmb2xsb3dpbmcgY2xhc3MgdGVtcGxhdGUgbmFtZSBtdXN0IGxpc3QgcGFyYW1ldGVycyBpbiB0aGUgLy8gb3JkZXIgdXNlZCBpbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdAp0ZW1wbGF0ZSA8Ym9vbCBCPgpjb25zdCBzdGQ6OnN0cmluZyBmcm9tPHRydWUsIEI+Ojp2YWx1ZSA9ICIiOwogCi8vIGZ1bGwgc3BlY2lhbGl6YXRpb24gLSB3b3Jrcwpjb25zdCBzdGQ6OnN0cmluZyBmcm9tPGZhbHNlLCB0cnVlPjo6dmFsdWUgPSAiIjsKIAogCmludCBtYWluKCkgewogICByZXR1cm4gMDsgICAgCn0=