LoginSignup
5
5

More than 5 years have passed since last update.

const修飾されたインスタンスはコンパイラが生成したデフォルトコンストラクタで初期化することはできない

Last updated at Posted at 2014-10-30

N4140, § 8.5.7 によるとconst修飾されたインスタンスは、コンパイラが生成したデフォルトコンストラクタで初期化することはできないらしい。

If a program calls for the default initialization of an object of a const-qualified type T, T shall be a class type with a user-provided default constructor.
- N4140, § 8.5.7

main.cpp
struct Data {
    Data() = default;
    Data(int) {}
};

int main() {
    Data d1(1); // OK
    Data d2; // OK
    Data const d3(1); // OK
    Data const d4; // Error
    return 0;
}
$ clang++ -std=gnu++14 -stdlib=libc++ -Wall -Wextra main.cpp
main.cpp:10:16: error: default initialization of an object of const type
'const Data' requires a user-provided default constructor
    Data const d4; // Error
               ^
1 error generated.
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5