#include <vector>
template<class T>
using vector_size = decltype(&(std::vector<T>::size));
//compiles fine
template<class T>
using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
//error
int main() {}
I'm not 100% sure of the vocabulary, but when I try to specify template parameters for a method function pointer templated using statement, I get compiler errors.
g++
main.cpp:8:70: error: expected primary-expression before '&&' token
8 | using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
| ^~
main.cpp:8:72: error: expected primary-expression before '>' token
8 | using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
| ^
main.cpp:8:73: error: expected primary-expression before ')' token
8 | using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
| ^
main.cpp:8:75: error: expected ';' before ')' token
8 | using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
| ^
| ;
clang++
main.cpp:8:70: error: expected '(' for function-style cast or type construction
using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
~^
main.cpp:8:72: error: expected expression
using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
^
main.cpp:8:73: error: expected expression
using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
^
main.cpp:8:75: error: expected ';' after alias declaration
using vector_emplace_back = decltype(&(std::vector<T>::emplace_back<T&&>)));
^
;
Visual Studio C++
source_file.cpp(8): error C2059: syntax error: ')'
Is there any workaround for this?