最終更新日時: 2025年07月10日 10時26分30秒 (JST)
Koichi Murase が更新

履歴 編集

# リテラル演算子のスペースを省略可能とする(C++14)

このページはC++14に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

## 概要

リテラル演算子を定義する際に、これまでは以下のように、`operator""`とサフィックス名の間に、ひとつ以上のスペースが必要だった。

    ReturnType operator"" _suffix(const char*);

このスペースが不要となった：

    ReturnType operator""_suffix(const char*); // OK

## 例

    #include <iostream>
    #include <string>

    namespace my_namespace {
    inline namespace literals {
      std::string operator""_s(const char* str, std::size_t length)
      {
        return std::string(str, length);
      }
    }}

    int main()
    {
      using namespace my_namespace::literals;

      auto x = "hello"_s; // xの型はstd::string
      std::cout << x << std::endl;
    }

### 出力

    hello

## 関連項目

- C++11 ユーザー定義リテラル

## 参照

- CWG Issue 1473. Syntax of literal-operator-id