このページは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