<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63240>63240</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Ubuntu bionic (gcc 7) fails to build with `constructor required before non-static data member`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            build-problem
      </td>
    </tr>

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

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

<pre>
    ```
/usr/bin/g++-7 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/MC/MCParser -I/build/source/llvm/lib/MC/MCParser -Iinclude -I/build/source/llvm/include -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/build/source/build-llvm=build-llvm -fdebug-prefix-map=/build/source/= -no-canonical-prefixes -no-canonical-prefixes -O3 -DNDEBUG  -fno-exceptions -funwind-tables -std=c++1z -MD -MT lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/MasmParser.cpp.o -MF lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/MasmParser.cpp.o.d -o lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/MasmParser.cpp.o -c /build/source/llvm/lib/MC/MCParser/MasmParser.cpp
In file included from /build/source/llvm/include/llvm/ADT/bit.h:20:0,
                 from /build/source/llvm/include/llvm/Support/MathExtras.h:16,
 from /build/source/llvm/include/llvm/ADT/APInt.h:19,
                 from /build/source/llvm/include/llvm/ADT/APFloat.h:18,
                 from /build/source/llvm/lib/MC/MCParser/MasmParser.cpp:13:
/usr/include/c++/7/type_traits: In substitution of 'template<class _Tp, class> static std::true_type std::__do_is_default_constructible_impl::__test(int) [with _Tp = {anonymous}::MasmParser::CppHashInfoTy; <template-parameter-1-2> = <missing>]':
/usr/include/c++/7/type_traits:889:35:   required from 'struct std::__is_default_constructible_impl<{anonymous}::MasmParser::CppHashInfoTy>'
/usr/include/c++/7/type_traits:143:12: required from 'struct std::__and_<std::__not_<std::is_void<{anonymous}::MasmParser::CppHashInfoTy> >, std::__is_default_constructible_impl<{anonymous}::MasmParser::CppHashInfoTy> >'
/usr/include/c++/7/type_traits:893:12:   required from 'struct std::__is_default_constructible_atom<{anonymous}::MasmParser::CppHashInfoTy>'
/usr/include/c++/7/type_traits:914:12: required from 'struct std::__is_default_constructible_safe<{anonymous}::MasmParser::CppHashInfoTy, false>'
/usr/include/c++/7/type_traits:920:12:   required from 'struct std::is_default_constructible<{anonymous}::MasmParser::CppHashInfoTy>'
/usr/include/c++/7/type_traits:143:12: [ skipping 17 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/7/type_traits:1141:12:   required from 'struct std::__is_copy_constructible_impl<llvm::detail::copy_construction_triviality_helper<std::tuple<llvm::SMLoc, {anonymous}::MasmParser::CppHashInfoTy, llvm::MCSymbol*> >, true>'
/usr/include/c++/7/type_traits:1147:12:   required from 'struct std::is_copy_constructible<llvm::detail::copy_construction_triviality_helper<std::tuple<llvm::SMLoc, {anonymous}::MasmParser::CppHashInfoTy, llvm::MCSymbol*> > >'
/build/source/llvm/include/llvm/Support/type_traits.h:97:8:   required from 'struct llvm::is_trivially_copy_constructible<std::tuple<llvm::SMLoc, {anonymous}::MasmParser::CppHashInfoTy, llvm::MCSymbol*> >'
/build/source/llvm/include/llvm/ADT/SmallVector.h:329:74:   required from 'class llvm::SmallVectorImpl<std::tuple<llvm::SMLoc, {anonymous}::MasmParser::CppHashInfoTy, llvm::MCSymbol*> >'
/build/source/llvm/include/llvm/ADT/SmallVector.h:1199:22:   required from 'class llvm::SmallVector<std::tuple<llvm::SMLoc, {anonymous}::MasmParser::CppHashInfoTy, llvm::MCSymbol*>, 4>'
/build/source/llvm/lib/MC/MCParser/MasmParser.cpp:449:64:   required from here
/usr/include/c++/7/type_traits:878:48: error: constructor required before non-static data member for '{anonymous}::MasmParser::CppHashInfoTy::LineNumber' has been parsed
 template<typename _Tp, typename = decltype(_Tp())>
 ^~~~~
/usr/include/c++/7/type_traits:878:48: error: constructor required before non-static data member for '{anonymous}::MasmParser::CppHashInfoTy::Buf' has been parsed
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWE9v2zoS_zT0hWAgUXYkH3ywpeitgTgpmvQFexIoaWRzS5F6_JPW79DPvqDkRG6bdBOn-4oahg0OOcPf_IYzGooZw7cSYIFmKzTLJszZndILsxf3YKyGSanq_QKdB4dvkKFgiWjujEY0L7lENN8iukJ0RWJMsuKPqw_FzfWH9-mFHxU3t1lapNdXN7fLq9tis0zfX9-ME_n1-83ye_HlerMepWvBS0TzTdr_vGPagMZk7bd3XNSI5kY5XQGiuRD3rf97UoHLSrgafqz6uKgxllUfSaeVhcoqTYzVSm4xuWuUbpnF5A60VhpF2SAgBiqnud1jcicVcdIZqEml2pbJmggugTC9dS1Ir1szC8TyFrzX-fX723X-7wNvKMooJs27dYpJIxUx0DJpeUW4tKA7ZbjlSmLS3HPDSy643RMu_QaG7HhdgzzCdrSPtyV4A35EagOY3DEh_NrPVrOvUHdMsxasp-3uk-YWvPdcbg0mdxUzlvzlmBg0Wm4Ml1vScBA14ZJbzgT_G7TBpIO6Rz6sFEpu-x9M7njbCV5xSxomhN1p5ba7gz22L4E4OVqqhwmp4HMFnSV233nsNQiwQKSS5J5r65ggtVV6WOxpH4geIApgtUfJZQ3SsgOBNWdbqYzllSGVEl65aZys_LQPp_83fh2z7KsxlG5LOg0N_0xa1qEoe-pI9QLSH6woGwcvN4CiDBPvDZNK8oqJgwqYZ8XXESbZVXax-vAHHkI-sHZA7uQnLmtiWSn8amNrFGXVkL_h35hsMkw2t_iJBEI0TzfsI-RcgEE0v7z8c_Mwd1ZzP79hpj0Iqq47U5hs8p9k6qzGRP00WBV-XfH4zshQBtcSN1wAPtSMGjdatT8yfVg4CpbZbV9F7dkORUsaoGgZIJoO5vG3n1ebv3Fdp7Tt4dvdhU9z0-8Uno-7nAh6-W4tB9jh_CdCfjCeC8UO5pPTzb8oltEyjFC0_ObRNiI7pAeieYxo7qtPYTXj1qBoidcSG1cay63ri4pqMKKxhbYTzAKK0kowY3Bx2yGa4n6AogtsfA2qcJ9_SxQtrXZQ9IXtUVQUtSq4KWpomBO2qJQ0VrvK8lJA4QvowzoLxiKacGkRnWM0W33idue3xL6AoHjl68S-Vc6gOBuURgqGcdp1_2Jmt5aNut2jaIVRlD44MT4NSEioR9-bjdJD6UfRBZpliMankpgkcxQto5nnE2MNfzmux2yKB6-PifkfrKSnuHzhHTgFfTj1pyekHv0LsDNZFyhKjyRS2a8k3BT3iten-oF7X9L_O1_4DZwl85Gzt0WcWdX-0xGfh9PXRPxZ7IY1cBp2muKGCQNvcaJ_2rw4BM858SuzDc1W2HzkXcflFocx5tJY328O7V2lpIXP1niynO92m8eCVrLqo9WsAiJ4yy2KsgBbhWtufF-EfTU7CVs4DV99rCvV7Z_OyqFx9AtrsIwfyv0365UsrOb3vlO2-2IHovOMj8XEuq4P0mjsZnOpKk_KaeduNLRJb_ZtqQSiy6Oy459kb4lvOI1feS6_Z_C3JO_benpCl3dEZd86zT2VyY-ZHCFx88CG2D9N6q86VSeQMvSRNy0T4s_-_t4TElHfacTTZygZerUjp0b19ZCTvz0DYTj3FNDn8usHFPwS9_3c9IUUvLDbn049A-dPHoIdaDito4l9nk37ZDu8e1nix_xRetynhEZpwFJJcrgF1Mwy3EJbgsaN0j4MpzxTveiSS7hy3hKiMd4xg0sAiTuvVR8uUUeXE--DZC083E8ex77Dr6ESXoBo0k8niM79N7o4GEKziy9fvnz5nflaueZZoh5fek7qRVTPozmbwCI8T86ndJokyWS3oHSehGFQx2UTxnHcBDBPIImnwTxiAauqCV_QgEbBeRiEcxrS5CyYBbMZJPF8HpRxlEzRNICWcXHmj_CZ0tsJN8bB4jyi02AiWAnC9K9mKR1eIHValQJaRCmaZRO98HqkdFuDpoHgxprRkuVWwOJD6aR1uORK8gojmmyrCsf-otgwLozve3rLuL80ovPg9UHwFDktFjtrOx9bRHNE8y23O1eeVao9ylCPttPqP1D551Xvq0E07939bwAAAP__ZS86wg">