Мне хотелось бы написать некий шаблонный метод, который инстанцируется только в случае наличия другого метода перегруженного для подставляемого параметра. Пример:
template<typename Type>
auto Func(Type first) -> declspec(TagFunc(first))
{
return TagFunc(first);
}
Проблема: TagFunc внутри метода, если нужно, ищется с использованием ADL, но уже внутри declspec ADL не подчиняется и в случае вызова из другого пространства имен auto не может определить тип возвращаемого параметра.
Вопросы:
1. Это глюки, не достаточная поддержка С++11 у 2013-ой студии?
2. Это поведение по стандарту и так и должно быть?
Если приведенный код не рабочий, то можно ли тут что-то сделать?