Change the decltype order

This commit is contained in:
Bradlee Speice 2020-08-28 13:32:05 -04:00
parent 75fab4c80d
commit ee39f7bc43

View File

@ -22,6 +22,13 @@ Same name and parameter signature, but return different types - `AsRef`
`.as_iter()`, and the iterator `Item` type `.as_iter()`, and the iterator `Item` type
# decltype and compiler-named types
Rust has some types named by the compiler, but inaccessible in traits; can't return `impl SomeTrait`
from traits. Can return `impl Future` from free functions and structs, but traits can't use
compiler-generated types (associated types still need to name the type). C++ doesn't appear to have
the same restrictions.
# Require static methods on a class? # Require static methods on a class?
Shouldn't be too hard - `T::some_method()` should be compilable. Shouldn't be too hard - `T::some_method()` should be compilable.
@ -343,10 +350,3 @@ mostly please just use concepts.
Worth acknowledging that C++ can do interesting things with `protected`, `friend`, and others, that Worth acknowledging that C++ can do interesting things with `protected`, `friend`, and others, that
Rust can't. However, Rust can limit trait implementations to current crate ("sealed traits"), where Rust can't. However, Rust can limit trait implementations to current crate ("sealed traits"), where
C++ concepts are purely duck typing. C++ concepts are purely duck typing.
# decltype and compiler-named types
Rust has some types named by the compiler, but inaccessible in traits; can't return `impl SomeTrait`
from traits. Can return `impl Future` from free functions and structs, but traits can't use
compiler-generated types (associated types still need to name the type). C++ doesn't appear to have
the same restrictions.