<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVU1v2zAM_TXOhYjh2GmTHHzIRzsMw4AB62WnQZYYW60suZLcLPv1o-RkcdZiw9BAiW1KfnwkH5nKiGP50EgH3AgEunbWVKxSR3hhSgqQGrZJvqE1WyT5FqregzZ-bJ8nxTrJdkm2Tm6z04qPztuee9hAstgMFqAPvbOU2if5KtoXuze2buO6PhBuihPO8EtHQUJS7GD2e2cDVQChl8kESX5PyzwBvqA9Hhq0OAY4EdwSxvpPmr2TuiZGFFux3lw8v2KxBf6Wx5AgxQjCaHV8Mz3DNqXcNxhPUQ3aTiq0ZGEeeG8tak92xjl23oH0KeywNYFu433nArvosOY8rY2ojPKpsTVZftL3c_Xh-cPd_Jsd811zbqwIwXlzqSE4z7RgVkBys-GKOZdK3XBvbJIXy-RmRzFeu_SydUbXU951aS1901epNGSn50NHVz2fzbPw_AosZOqsmOIO0jSFj_sh5t6hnR6s9B41pUMPFTIWDqZXAiqSqFLTvbEtiiDHkDpSbG1ZGzJ52UzhjvEmBIM_OovOSaPfE0VASak-LaMQSKLFeoRLSqVyBy5X_qZKOv9up50hkFc-B-zg2IHZR98hcCB1USW95N85owPF9uHUTcUd0ehC7kl_lLnYDOF4R9-zCjVr8QxHKiFfndFRK-NadIzSjZ50SpIJEA8jCIFUcIsC_LGLWCcX6ViDX81AdJgP4W2Be6mlp8ig7Z0PlcbnXtIQohYgpf5jxrzZwtthnMCPOErCPhmus3OZNjE_4eRf586185Y9xT4ai_C3AkH0GFqMtZWse-mP_9e7zafV8_zli3iciLIQq2LFJqz3jbHlPQo76a0q_4AZhEQapQelXs6XKVF7RE5x3kvnenR0c1Pc3hSTppzhku1XjFdzfrtaiv1-v8wQF6vFgq6iqiaKVahcSbJO8lzjASIE3ZOsJ-9nIMs8y2lly1k-W2azNM9xwVc5ZmwhshkTyTzDlkmVBpyQnYktI2TV1442Qxe4yyZNGllrxEiYGHrpFZbjPypq1PMfGzWA9FSnkbQdkHRP4xbFJLItI9Vfqmoseg>53653</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            C++14: invalid inherited constructors are accepted
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Fedr
      </td>
    </tr>
</table>

<pre>
    This code is probably valid in C++17, but not in C++14:
```
struct B {
    B(int) {}
    B(int&&) {}
};

int i = 1;
B b(i); //ok everywhere

struct C : B {
    using B::B;
};

C c(i); //ok in Clang only
```
Clang is the only compiler that currently accepts it. Demo: https://gcc.godbolt.org/z/MbGqGE4Yr

According to C++14 standard [class.inhctor#8](https://timsong-cpp.github.io/cppwp/n4140/class.inhctor#8):
> ... If that user-written constructor would be ill-formed, the program is ill-formed. Each [expression](https://timsong-cpp.github.io/cppwp/n4140/expr.comma#nt:expression) in the [expression-list](https://timsong-cpp.github.io/cppwp/n4140/expr.post#nt:expression-list) is of the form `static_cast<T&&>(p)`, where `p` is the name of the corresponding constructor parameter and `T` is the declared type of `p`.

So `struct B` definition must be equivalent to:
```
struct C : B {
    C(int x) : B(static_cast<int&&>(x)) {}
};
```
making the program ill-formed due to ambiguity. Demo: https://gcc.godbolt.org/z/hK9q4vPdj
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVMmO2zgQ_Rr5UrCgxW7bBx28dAfBYIAA6cucBlzKEhOKVJNUO87XpyjZsZxuzCCIQVlSkXqvllfFrTxXz43yIKxEoHvnLGdcn-GVaSVBGdgnxY5WvkqKPfA-gLFhal8k5TbJDkm2TR6yyxpefXC9CLCDZLUbLUA_-matTEiKzWBfHd7ZehjW_YH4UF5wxn86CgqS8gD5z50d8AhCH5MJkuKJlv0K-IrufGrQ4RTg4uCeMLa_utl7ZWryiGIrt7sb8xsv9iDeY4wJ0owgrNHnd9MzblPKQ4PDKapB2ymNjiwsgOidQxPIzoTALnhQIYUDtja624TQ-ejdQFgLkdZWcqtDal1Nlu90_c0_vHx4XPzjpv5uhbBOxuCCvdUQfGBGMichWe6EZt6nyjQiWJcU5TpZHijGe8qgWm9NPRddl9YqND1PlSU7vZ86uptFvsji-xuwmKmrYspHSNMUPh7HmHuPbn5yKgQ0lA4zVsg6ONleS-AkUa3nR-talFGOMXWk2NqxNmbytpnCIxNNDAa_dQ69V9b8SRQRJaX6tIxCIImW2wkuKZXKHX2545tr5cMfk3aWQN5wjtiR2IM9DtwxcCB1USWDEv8KRgfK_fOlm8pHcqOLuSf9UeaGZojHO7quKjSsxSscqYS4OmsGrUxr0TFKNwbSKUkmQjxPICRSwR1KCOduwLpQpFMNfrajo-N8iF9LPCqjAkUGbe9DrDS-9IqGELUAKfV_Zsy7Lbwfxwl8G0ZJ3CfDfXZu02bITzz5n3PnnrxlX4c-morwpwJB9hhbjLVc1b0K59_r3eavzcvi9ZP8MpNVKTflhs2CChqr6dgl2V3HNJVTBWKdFMoDFeIyPFDOeqerX5hH7ZGs6UXr1-ttTtF8QUGpeVLe9-jpYVk-LMtZU2WSL2S-lrJYcymK43JR8FyUR85XgmO-mmnGUfuKOiEpCoMnGCDomTphpqoiK2hl67zI11meFgWuxKbAjK1kljOZLDJsmdJp9COmY-aqwSXe1542o-z9bZNGi6oN4kBH-KwPjXXVE0o3G3irwe8fJ18W2Q">