先日、テンプレートのメタプログラミングを行っているときに、奇妙なことに遭遇しました。それは基本的にこの主張に帰着します(私が期待するとおり)通過しません。
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
最初は、関数参照を定義する構文上の間違いを犯していると思っていましたが、このアサーションは成功し、そうではないことがわかりました。
static_assert(std::is_same_v<void()&, void()&>);
またremove_reference
、cppreferenceからソースをコピーして自分で実装しようとしましたが、それも機能しませんでした。ここで何が起こっているのですか?