がコンパイルに失敗したテンプレートの休憩string_literals:エラーの場合はgccのバグの回避策:で使用してchrono_literals GCC 4.9.2次のコードで
error: no matching function for call to 'operator""s()'
ありません:errorsを与える
#include <chrono>
#include <string>
using namespace std::literals::string_literals;
using namespace std::literals::chrono_literals;
template<typename T>
struct S
{
S()
{
"hello"s;
}
};
int main()
{
S<int> s;
}
で始まります私はchrono_literals
行をコメントアウトし、テンプレートではないクラスについてはエラーを出力しません。
これはgCC 4.9のバグです.GCC 5とclangで同じコードが動作するためです。私の質問です:私は、このコンパイラのバージョンでは、テンプレートでstd :: stringリテラルとクロノリテラルの両方を使用できるように私は配置することができます回避策はありますか?
たとえば、標準ヘッダーのいずれかで編集できるもの、またはコード内でグローバルに行うことができるものはありますか?
注:このコンパイラのバージョンには、C++標準が規定しているように暗黙のうちにusing namespace std::literals::chrono_literals
が含まれていません。 GCC 5でも追加されました。
あなたはトップレベルで 'using'を持っている必要がありますか?同じ機能で両方を使用する必要がありますか?同じ範囲? –