stdタイプのユーザー定義の演繹ガイド
何らかの理由で、clangで期待されるCTADがまだ不足しています:std::initializer_list
std::initializer_list l{1,2,3}; // error in clang
次のようなユーザー定義ガイドを追加すると、問題を解決できます。
namespace std {
template<class T>
initializer_list(const initializer_list<T>&) -> initializer_list<T>;
}
しかし、std::
タイプのCTADのユーザー定義ガイドを追加することは許可されていますか?
回答
5 Oliv
標準ライブラリタイプに推論ガイドを追加するのはUB [namespacestd]§4.4です。
C ++プログラムの動作は、次のように宣言されている場合は未定義です:[...]
- 標準ライブラリクラステンプレートの推論ガイド。