Давайте рассмотрим следующий код (успешно компилируется с clang ++ 7.0.0 , аргументы компилятора -std=c++17 -Wall -Wextra -Werror -pedantic-errors
):
#include <iostream>
struct Foo
{
template <typename Type = void>
operator int()
{
return 42;
}
};
int main()
{
const auto i = Foo{}.operator int();
std::cout << i << std::endl;
}
Можно ли вызывать такой шаблонный пользовательскийоператор преобразования с явно предоставленными аргументами шаблона?Наивный подход не компилируется:
const auto i = Foo{}.operator int<bool>();